mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-14 19:05:37 +00:00
bgpd: Zebra lib for Graceful Restart.
These changes are for Zebra lib in order to supportGraceful Restart feature. These changes are addedtemporarily, until Zebra Graceful Restart lib Pr is merged. Signed-off-by: Biswajit Sadhu <sadhub@vmware.com> Signed-off-by: Soman K S <somanks@vmware.com>
This commit is contained in:
parent
2d3dd828db
commit
eb451ee589
@ -3299,3 +3299,31 @@ void zclient_interface_set_master(struct zclient *client,
|
|||||||
stream_putw_at(s, 0, stream_get_endp(s));
|
stream_putw_at(s, 0, stream_get_endp(s));
|
||||||
zclient_send_message(client);
|
zclient_send_message(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Process capabilities message from zebra */
|
||||||
|
int zapi_capabilities_decode(struct stream *s, struct zapi_cap *api)
|
||||||
|
{
|
||||||
|
memset(api, 0, sizeof(*api));
|
||||||
|
|
||||||
|
STREAM_GETL(s, api->cap);
|
||||||
|
switch (api->cap) {
|
||||||
|
case ZEBRA_CLIENT_GR_CAPABILITIES:
|
||||||
|
case ZEBRA_CLIENT_RIB_STALE_TIME:
|
||||||
|
STREAM_GETL(s, api->stale_removal_time);
|
||||||
|
STREAM_GETL(s, api->vrf_id);
|
||||||
|
break;
|
||||||
|
case ZEBRA_CLIENT_ROUTE_UPDATE_COMPLETE:
|
||||||
|
case ZEBRA_CLIENT_ROUTE_UPDATE_PENDING:
|
||||||
|
STREAM_GETL(s, api->afi);
|
||||||
|
STREAM_GETL(s, api->safi);
|
||||||
|
STREAM_GETL(s, api->vrf_id);
|
||||||
|
break;
|
||||||
|
case ZEBRA_CLIENT_GR_DISABLE:
|
||||||
|
STREAM_GETL(s, api->vrf_id);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
stream_failure:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -73,6 +73,14 @@ typedef uint16_t zebra_size_t;
|
|||||||
#define ZEBRA_FEC_REGISTER_LABEL 0x1
|
#define ZEBRA_FEC_REGISTER_LABEL 0x1
|
||||||
#define ZEBRA_FEC_REGISTER_LABEL_INDEX 0x2
|
#define ZEBRA_FEC_REGISTER_LABEL_INDEX 0x2
|
||||||
|
|
||||||
|
/* Client Graceful Restart */
|
||||||
|
#define ZEBRA_CLIENT_GR_CAPABILITIES 0x1
|
||||||
|
#define ZEBRA_CLIENT_ROUTE_UPDATE_COMPLETE 0x2
|
||||||
|
#define ZEBRA_CLIENT_ROUTE_UPDATE_PENDING 0x3
|
||||||
|
#define ZEBRA_CLIENT_GR_DISABLE 0x4
|
||||||
|
#define ZEBRA_CLIENT_RIB_STALE_TIME 0x5
|
||||||
|
#define ZEBRA_CLIENT_GR_ENABLED(X) (X & ZEBRA_CLIENT_GR_CAPABILITIES)
|
||||||
|
|
||||||
extern struct sockaddr_storage zclient_addr;
|
extern struct sockaddr_storage zclient_addr;
|
||||||
extern socklen_t zclient_addr_len;
|
extern socklen_t zclient_addr_len;
|
||||||
|
|
||||||
@ -184,6 +192,7 @@ typedef enum {
|
|||||||
ZEBRA_MLAG_CLIENT_UNREGISTER,
|
ZEBRA_MLAG_CLIENT_UNREGISTER,
|
||||||
ZEBRA_MLAG_FORWARD_MSG,
|
ZEBRA_MLAG_FORWARD_MSG,
|
||||||
ZEBRA_ERROR,
|
ZEBRA_ERROR,
|
||||||
|
ZEBRA_CLIENT_CAPABILITIES
|
||||||
} zebra_message_types_t;
|
} zebra_message_types_t;
|
||||||
|
|
||||||
enum zebra_error_types {
|
enum zebra_error_types {
|
||||||
@ -222,6 +231,15 @@ struct zclient_capabilities {
|
|||||||
enum mlag_role role;
|
enum mlag_role role;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Graceful Restart Capabilities message */
|
||||||
|
struct zapi_cap {
|
||||||
|
uint32_t cap;
|
||||||
|
uint32_t stale_removal_time;
|
||||||
|
afi_t afi;
|
||||||
|
safi_t safi;
|
||||||
|
vrf_id_t vrf_id;
|
||||||
|
};
|
||||||
|
|
||||||
/* Structure for the zebra client. */
|
/* Structure for the zebra client. */
|
||||||
struct zclient {
|
struct zclient {
|
||||||
/* The thread master we schedule ourselves on */
|
/* The thread master we schedule ourselves on */
|
||||||
@ -776,4 +794,7 @@ extern void zclient_send_mlag_deregister(struct zclient *client);
|
|||||||
extern void zclient_send_mlag_data(struct zclient *client,
|
extern void zclient_send_mlag_data(struct zclient *client,
|
||||||
struct stream *client_s);
|
struct stream *client_s);
|
||||||
|
|
||||||
|
extern int zclient_capabilities_send(uint32_t cmd, struct zclient *zclient,
|
||||||
|
struct zapi_cap *api);
|
||||||
|
extern int zapi_capabilities_decode(struct stream *s, struct zapi_cap *api);
|
||||||
#endif /* _ZEBRA_ZCLIENT_H */
|
#endif /* _ZEBRA_ZCLIENT_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user