From: Christian Franke Date: Wed, 24 Oct 2018 03:28:12 +0000 (+0200) Subject: isisd: Log SPF trigger source when debugging X-Git-Tag: frr-7.1-dev~247^2~3 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=d62db30d9241d0b97a2cae8fdb16ae90b5b2e964;p=matthieu%2Ffrr.git isisd: Log SPF trigger source when debugging For debugging the scheduling of SPF, it is useful to see from where an SPF run is scheduled. So add this information to the log. Signed-off-by: Christian Franke --- diff --git a/isisd/isis_spf.c b/isisd/isis_spf.c index 1440a3becf..1c4ca249ee 100644 --- a/isisd/isis_spf.c +++ b/isisd/isis_spf.c @@ -1248,7 +1248,8 @@ static struct isis_spf_run *isis_run_spf_arg(struct isis_area *area, int level) return run; } -int isis_spf_schedule(struct isis_area *area, int level) +int _isis_spf_schedule(struct isis_area *area, int level, + const char *func, const char *file, int line) { struct isis_spftree *spftree = area->spftree[SPFTREE_IPV4][level - 1]; time_t now = monotime(NULL); @@ -1257,10 +1258,12 @@ int isis_spf_schedule(struct isis_area *area, int level) assert(diff >= 0); assert(area->is_type & level); - if (isis->debugs & DEBUG_SPF_EVENTS) + if (isis->debugs & DEBUG_SPF_EVENTS) { zlog_debug( - "ISIS-Spf (%s) L%d SPF schedule called, lastrun %d sec ago", - area->area_tag, level, diff); + "ISIS-Spf (%s) L%d SPF schedule called, lastrun %d sec ago" + " Caller: %s %s:%d", + area->area_tag, level, diff, func, file, line); + } if (area->spf_delay_ietf[level - 1]) { /* Need to call schedule function also if spf delay is running diff --git a/isisd/isis_spf.h b/isisd/isis_spf.h index f4db98cfed..8bf9c9978a 100644 --- a/isisd/isis_spf.h +++ b/isisd/isis_spf.h @@ -34,7 +34,11 @@ void isis_spftree_del(struct isis_spftree *spftree); void spftree_area_init(struct isis_area *area); void spftree_area_del(struct isis_area *area); void spftree_area_adj_del(struct isis_area *area, struct isis_adjacency *adj); -int isis_spf_schedule(struct isis_area *area, int level); +#define isis_spf_schedule(area, level) \ + _isis_spf_schedule((area), (level), __func__, \ + __FILE__, __LINE__) +int _isis_spf_schedule(struct isis_area *area, int level, + const char *func, const char *file, int line); void isis_spf_cmds_init(void); void isis_spf_print(struct isis_spftree *spftree, struct vty *vty); struct isis_spftree *isis_run_hopcount_spf(struct isis_area *area,