diff options
| author | Rafael Zalamena <rzalamena@opensourcerouting.org> | 2019-02-02 09:57:08 -0200 |
|---|---|---|
| committer | Rafael Zalamena <rzalamena@opensourcerouting.org> | 2019-02-14 14:18:23 -0200 |
| commit | d245e522f0a48934bc0f815e0efa126054aa0b04 (patch) | |
| tree | 1de7113dc68752097661c9949b5bccf595ef06d2 /bfdd/event.c | |
| parent | 843b324ddd620e5b70bf0ac1f5d02e697e986e3d (diff) | |
bfdd: implement session interface observer
Allow `bfdd` to configure inexisting interfaces / VRF and only activate
them once the interface/VRF start existing. This implementation doesn't
handle dynamic VRFs yet.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Diffstat (limited to 'bfdd/event.c')
| -rw-r--r-- | bfdd/event.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/bfdd/event.c b/bfdd/event.c index 3f48921af9..5ba54c2b0b 100644 --- a/bfdd/event.c +++ b/bfdd/event.c @@ -43,7 +43,8 @@ void bfd_recvtimer_update(struct bfd_session *bs) bfd_recvtimer_delete(bs); /* Don't add event if peer is deactivated. */ - if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN)) + if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN) || + bs->sock == -1) return; tv_normalize(&tv); @@ -63,7 +64,8 @@ void bfd_echo_recvtimer_update(struct bfd_session *bs) bfd_echo_recvtimer_delete(bs); /* Don't add event if peer is deactivated. */ - if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN)) + if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN) || + bs->sock == -1) return; tv_normalize(&tv); @@ -83,7 +85,8 @@ void bfd_xmttimer_update(struct bfd_session *bs, uint64_t jitter) bfd_xmttimer_delete(bs); /* Don't add event if peer is deactivated. */ - if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN)) + if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN) || + bs->sock == -1) return; tv_normalize(&tv); @@ -102,7 +105,8 @@ void bfd_echo_xmttimer_update(struct bfd_session *bs, uint64_t jitter) bfd_echo_xmttimer_delete(bs); /* Don't add event if peer is deactivated. */ - if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN)) + if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN) || + bs->sock == -1) return; tv_normalize(&tv); |
