summaryrefslogtreecommitdiff
path: root/zebra/interface.c
diff options
context:
space:
mode:
authorRuss White <russ@riw.us>2019-09-24 11:46:13 -0400
committerGitHub <noreply@github.com>2019-09-24 11:46:13 -0400
commit8db933928fd8c66369c15060264c84fb0342e67b (patch)
treecb555d043941e219de510a587f3c005384d4d17e /zebra/interface.c
parenta7f5a058e26989ccd53b9416e4822305095cd9a1 (diff)
parent594c28781672aeb80b62a6fc6f876db2d0f865e1 (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.c11
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,