diff options
| author | Karen Schoener <karen@voltanet.io> | 2020-07-22 12:41:57 -0400 | 
|---|---|---|
| committer | lynne <lynne@voltanet.io> | 2020-09-09 11:12:02 -0400 | 
| commit | 24e7c5c8975630d93f619b333dbdf417b316fd0c (patch) | |
| tree | 89523efcaab2ecd940922cc05f85703df69ffcc7 /lib/ldp_sync.h | |
| parent | 1fe192228bd7f9a644352b216d42e32c2a2378c5 (diff) | |
lib: adding support for LDP IGP Sync feature
Signed-off-by: Lynne Morrison <lynne@voltanet.io>
Signed-off-by: Karen Schoener <karen@voltanet.io>
Diffstat (limited to 'lib/ldp_sync.h')
| -rw-r--r-- | lib/ldp_sync.h | 91 | 
1 files changed, 91 insertions, 0 deletions
diff --git a/lib/ldp_sync.h b/lib/ldp_sync.h new file mode 100644 index 0000000000..daede566f0 --- /dev/null +++ b/lib/ldp_sync.h @@ -0,0 +1,91 @@ +/* + * Defines and structures common to LDP-Sync for OSPFv2 and OSPFv3 and ISIS + * Copyright (C) 2020 Volta Networks, Inc. + * + * This program 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 of the License, or (at your option) + * any later version. + * + * This program 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 this program; see the file COPYING; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef _LIBLDPSYNC_H +#define _LIBLDPSYNC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* LDP-IGP Sync values */ +#define LDP_SYNC_FLAG_ENABLE     (1 << 0) /* LDP-SYNC enabled */ +#define LDP_SYNC_FLAG_HOLDDOWN   (1 << 1) /* Holddown timer enabled */ +#define LDP_SYNC_FLAG_IF_CONFIG  (1 << 2) /* LDP-SYNC enabled on interface */ +#define LDP_SYNC_FLAG_SET_METRIC (1 << 3) /* Metric has been set on ISIS intf */ + +#define LDP_IGP_SYNC_DEFAULT        0 +#define LDP_IGP_SYNC_ENABLED        1 + +#define LDP_IGP_SYNC_STATE_NOT_REQUIRED     0 +#define LDP_IGP_SYNC_STATE_REQUIRED_NOT_UP  1 +#define LDP_IGP_SYNC_STATE_REQUIRED_UP      2 + +#define LDP_IGP_SYNC_HOLDDOWN_DEFAULT 0 + +#define LDP_IGP_SYNC_HELLO_TIMEOUT 1 + +/* LDP-IGP Sync structures */ +struct ldp_sync_info_cmd { +	uint16_t flags; +	uint16_t holddown;       /* timer value */ +	uint32_t sequence;       /* hello sequence number */ +	struct thread *t_hello;  /* hello timer for detecting LDP going down */ +}; + +struct ldp_sync_info { +	uint16_t flags;          /* indicate if set on interface or globally */ +	uint8_t enabled;         /* enabled */ +	uint8_t state;           /* running state */ +	uint16_t holddown;       /* timer value */ +	struct thread *t_holddown; /* holddown timer*/ +	uint32_t metric[2];      /* isis interface metric */ +}; + +/* Prototypes. */ +extern struct ldp_sync_info *ldp_sync_info_create(void); +extern bool ldp_sync_if_is_enabled(struct ldp_sync_info *ldp_sync_info); +extern bool ldp_sync_if_down(struct ldp_sync_info *ldp_sync_info); +extern void ldp_sync_info_free(struct ldp_sync_info **ldp_sync_info); + +struct ldp_igp_sync_announce { +	int proto; +}; + +struct ldp_igp_sync_if_state { +	ifindex_t ifindex; +	bool sync_start; +}; + +struct ldp_igp_sync_if_state_req { +	int proto; +	ifindex_t ifindex; +	char name[INTERFACE_NAMSIZ]; +}; + +struct ldp_igp_sync_hello { +	int proto; +	unsigned int sequence; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBLDPSYNC_H */  | 
