diff options
| author | Russ White <russ@riw.us> | 2019-09-24 11:46:13 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-09-24 11:46:13 -0400 |
| commit | 8db933928fd8c66369c15060264c84fb0342e67b (patch) | |
| tree | cb555d043941e219de510a587f3c005384d4d17e /zebra/interface.c | |
| parent | a7f5a058e26989ccd53b9416e4822305095cd9a1 (diff) | |
| parent | 594c28781672aeb80b62a6fc6f876db2d0f865e1 (diff) | |
Merge pull request #4959 from pguibert6WIND/zebra_inform_layer
zebra: inform upper layer error when reading correct speed interface
Diffstat (limited to 'zebra/interface.c')
| -rw-r--r-- | zebra/interface.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/zebra/interface.c b/zebra/interface.c index bb808e1852..940bc2b1c9 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -70,10 +70,19 @@ static int if_zebra_speed_update(struct thread *thread) struct zebra_if *zif = ifp->info; uint32_t new_speed; bool changed = false; + int error = 0; zif->speed_update = NULL; - new_speed = kernel_get_speed(ifp); + new_speed = kernel_get_speed(ifp, &error); + + /* error may indicate vrf not available or + * interfaces not available. + * note that loopback & virtual interfaces can return 0 as speed + */ + if (error < 0) + return 1; + if (new_speed != ifp->speed) { zlog_info("%s: %s old speed: %u new speed: %u", __PRETTY_FUNCTION__, ifp->name, ifp->speed, |
