1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*********************************************************************
3 * Copyright 2017-2018 Network Device Education Foundation, Inc. ("NetDEF")
5 * bfdctl.h: all BFDd control socket protocol definitions.
9 * Rafael Zalamena <rzalamena@opensourcerouting.org>
15 #include <netinet/in.h>
21 * Auxiliary definitions
25 struct sockaddr_in sa_sin
;
26 struct sockaddr_in6 sa_sin6
;
34 #define BPC_DEF_DETECTMULTIPLIER 3
35 #define BPC_DEF_RECEIVEINTERVAL 300 /* milliseconds */
36 #define BPC_DEF_TRANSMITINTERVAL 300 /* milliseconds */
37 #define BPC_DEF_ECHORECEIVEINTERVAL 50 /* milliseconds */
38 #define BPC_DEF_ECHOTRANSMITINTERVAL 50 /* milliseconds */
41 enum bfd_peer_status
{
42 BPS_SHUTDOWN
= 0, /* == PTM_BFD_ADM_DOWN, "adm-down" */
43 BPS_DOWN
= 1, /* == PTM_BFD_DOWN, "down" */
44 BPS_INIT
= 2, /* == PTM_BFD_INIT, "init" */
45 BPS_UP
= 3, /* == PTM_BFD_UP, "up" */
51 struct sockaddr_any bpc_peer
;
52 struct sockaddr_any bpc_local
;
55 char bpc_label
[MAXNAMELEN
];
58 char bpc_localif
[MAXNAMELEN
+ 1];
61 char bpc_vrfname
[MAXNAMELEN
+ 1];
63 bool bpc_has_detectmultiplier
;
64 uint8_t bpc_detectmultiplier
;
66 bool bpc_has_recvinterval
;
67 uint64_t bpc_recvinterval
;
69 bool bpc_has_txinterval
;
70 uint64_t bpc_txinterval
;
72 bool bpc_has_echorecvinterval
;
73 uint64_t bpc_echorecvinterval
;
75 bool bpc_has_echotxinterval
;
76 uint64_t bpc_echotxinterval
;
78 bool bpc_has_minimum_ttl
;
79 uint8_t bpc_minimum_ttl
;
91 /* Status information */
92 enum bfd_peer_status bpc_bps
;
94 uint32_t bpc_remoteid
;
96 uint8_t bpc_remotediag
;
97 uint8_t bpc_remote_detectmultiplier
;
98 uint64_t bpc_remote_recvinterval
;
99 uint64_t bpc_remote_txinterval
;
100 uint64_t bpc_remote_echointerval
;
101 uint64_t bpc_lastevent
;
106 * Protocol definitions
108 enum bc_msg_version
{
121 /* Notify flags to use with bcm_notify. */
122 #define BCM_NOTIFY_ALL ((uint64_t)-1)
123 #define BCM_NOTIFY_PEER_STATE (1ULL << 0)
124 #define BCM_NOTIFY_CONFIG (1ULL << 1)
125 #define BCM_NOTIFY_NONE 0
127 /* Response 'status' definitions. */
128 #define BCM_RESPONSE_OK "ok"
129 #define BCM_RESPONSE_ERROR "error"
131 /* Notify operation. */
132 #define BCM_NOTIFY_PEER_STATUS "status"
133 #define BCM_NOTIFY_CONFIG_ADD "add"
134 #define BCM_NOTIFY_CONFIG_DELETE "delete"
135 #define BCM_NOTIFY_CONFIG_UPDATE "update"
137 /* Notification special ID. */
138 #define BCM_NOTIFY_ID 0
140 struct bfd_control_msg
{
141 /* Total length without the header. */
144 * Message request/response id.
145 * All requests will have a correspondent response with the
151 /* Message version. */
153 /* Message payload. */