diff options
| author | Christian Franke <nobody@nowhere.ws> | 2017-02-21 22:32:08 +0100 |
|---|---|---|
| committer | Christian Franke <nobody@nowhere.ws> | 2017-02-22 16:18:40 +0100 |
| commit | c1d0d21f9895d2ee1468989e44b9eb77ab3dd46f (patch) | |
| tree | bd3fe584591c236dfc1874da7dd87242b09dff98 /lib/spf_backoff.h | |
| parent | 8ba835eb69d897d67a46ede418c81387bd1cc55b (diff) | |
lib: add SPF back-off implementation
Add an implementation of draft-ietf-rtgwg-backoff-algo-04 to
libfrr.
Diffstat (limited to 'lib/spf_backoff.h')
| -rw-r--r-- | lib/spf_backoff.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/lib/spf_backoff.h b/lib/spf_backoff.h new file mode 100644 index 0000000000..552ca4ae41 --- /dev/null +++ b/lib/spf_backoff.h @@ -0,0 +1,66 @@ +/* + * This is an implementation of the IETF SPF delay algorithm + * as explained in draft-ietf-rtgwg-backoff-algo-04 + * + * Created: 25-01-2017 by S. Litkowski + * + * Copyright (C) 2017 Orange Labs http://www.orange.com/ + * Copyright (C) 2017 by Christian Franke, Open Source Routing / NetDEF Inc. + * + * This file is part of FreeRangeRouting (FRR) + * + * FRR is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * FRR is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with FRR; see the file COPYING. If not, write to the Free + * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ +#ifndef _ZEBRA_SPF_BACKOFF_H +#define _ZEBRA_SPF_BACKOFF_H + +struct spf_backoff; +struct thread_master; +struct vty; + +struct spf_backoff *spf_backoff_new(struct thread_master *m, + const char *name, + long init_delay, + long short_delay, + long long_delay, + long holddown, + long timetolearn); + +void spf_backoff_free(struct spf_backoff *backoff); + +/* Called whenever an IGP event is received, returns how many + * milliseconds routing table computation should be delayed */ +long spf_backoff_schedule(struct spf_backoff *backoff); + +/* Shows status of SPF backoff instance */ +void spf_backoff_show(struct spf_backoff *backoff, + struct vty *vty, + const char *prefix); + +/* Writes out global SPF backoff debug config */ +int spf_backoff_write_config(struct vty *vty); + +/* Registers global SPF backoff debug commands */ +void spf_backoff_cmd_init(void); + +/* Accessor functions for SPF backoff parameters */ +long spf_backoff_init_delay(struct spf_backoff *backoff); +long spf_backoff_short_delay(struct spf_backoff *backoff); +long spf_backoff_long_delay(struct spf_backoff *backoff); +long spf_backoff_holddown(struct spf_backoff *backoff); +long spf_backoff_timetolearn(struct spf_backoff *backoff); + +#endif |
