]> git.proxmox.com Git - mirror_frr.git/blame - bgpd/bgp_debug.h
doc: Add `show ipv6 rpf X:X::X:X` command to docs
[mirror_frr.git] / bgpd / bgp_debug.h
CommitLineData
718e3744 1/* BGP message debug header.
896014f4
DL
2 * Copyright (C) 1996, 97, 98 Kunihiro Ishiguro
3 *
4 * This file is part of GNU Zebra.
5 *
6 * GNU Zebra is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2, or (at your option) any
9 * later version.
10 *
11 * GNU Zebra is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program; see the file COPYING; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
718e3744 20
00d252cb 21#ifndef _QUAGGA_BGP_DEBUG_H
22#define _QUAGGA_BGP_DEBUG_H
23
0b2aa3a0 24#include "bgp_attr.h"
3f9c7369 25#include "bgp_updgrp.h"
0b2aa3a0 26
718e3744 27/* sort of packet direction */
28#define DUMP_ON 1
29#define DUMP_SEND 2
30#define DUMP_RECV 4
31
32/* for dump_update */
33#define DUMP_WITHDRAW 8
34#define DUMP_NLRI 16
35
36/* dump detail */
37#define DUMP_DETAIL 32
38
906ad49b 39/* RD + Prefix + Path-Id */
6c995628
AD
40#define BGP_PRD_PATH_STRLEN \
41 (PREFIX_STRLEN + RD_ADDRSTRLEN + INET6_ADDRSTRLEN + 34)
906ad49b 42
718e3744 43extern int dump_open;
44extern int dump_update;
45extern int dump_keepalive;
46extern int dump_notify;
47
48extern int Debug_Event;
49extern int Debug_Keepalive;
50extern int Debug_Update;
51extern int Debug_Radix;
52
53#define NLRI 1
54#define WITHDRAW 2
55#define NO_OPT 3
56#define SEND 4
57#define RECV 5
58#define DETAIL 6
59
60/* Prototypes. */
d62a17ae 61extern void bgp_debug_init(void);
62extern void bgp_packet_dump(struct stream *);
718e3744 63
d62a17ae 64extern int debug(unsigned int option);
718e3744 65
0b2aa3a0 66extern unsigned long conf_bgp_debug_as4;
16286195 67extern unsigned long conf_bgp_debug_neighbor_events;
718e3744 68extern unsigned long conf_bgp_debug_packet;
718e3744 69extern unsigned long conf_bgp_debug_keepalive;
70extern unsigned long conf_bgp_debug_update;
9fbdd100 71extern unsigned long conf_bgp_debug_bestpath;
a39275d7 72extern unsigned long conf_bgp_debug_zebra;
cebb7440 73extern unsigned long conf_bgp_debug_allow_martians;
fb018d25 74extern unsigned long conf_bgp_debug_nht;
3f9c7369 75extern unsigned long conf_bgp_debug_update_groups;
ddb5b488 76extern unsigned long conf_bgp_debug_vpn;
268e1b9b 77extern unsigned long conf_bgp_debug_flowspec;
955bfd98 78extern unsigned long conf_bgp_debug_labelpool;
1a80fc0f 79extern unsigned long conf_bgp_debug_pbr;
b0965c44 80extern unsigned long conf_bgp_debug_graceful_restart;
52653398 81extern unsigned long conf_bgp_debug_evpn_mh;
259f4236 82extern unsigned long conf_bgp_debug_bfd;
8093d799 83extern unsigned long conf_bgp_debug_cond_adv;
718e3744 84
0b2aa3a0 85extern unsigned long term_bgp_debug_as4;
16286195 86extern unsigned long term_bgp_debug_neighbor_events;
718e3744 87extern unsigned long term_bgp_debug_packet;
718e3744 88extern unsigned long term_bgp_debug_keepalive;
89extern unsigned long term_bgp_debug_update;
9fbdd100 90extern unsigned long term_bgp_debug_bestpath;
a39275d7 91extern unsigned long term_bgp_debug_zebra;
cebb7440 92extern unsigned long term_bgp_debug_allow_martians;
fb018d25 93extern unsigned long term_bgp_debug_nht;
3f9c7369 94extern unsigned long term_bgp_debug_update_groups;
ddb5b488 95extern unsigned long term_bgp_debug_vpn;
268e1b9b 96extern unsigned long term_bgp_debug_flowspec;
955bfd98 97extern unsigned long term_bgp_debug_labelpool;
1a80fc0f 98extern unsigned long term_bgp_debug_pbr;
b0965c44 99extern unsigned long term_bgp_debug_graceful_restart;
52653398 100extern unsigned long term_bgp_debug_evpn_mh;
259f4236 101extern unsigned long term_bgp_debug_bfd;
8093d799 102extern unsigned long term_bgp_debug_cond_adv;
b0965c44 103
16286195
DS
104extern struct list *bgp_debug_neighbor_events_peers;
105extern struct list *bgp_debug_keepalive_peers;
106extern struct list *bgp_debug_update_in_peers;
107extern struct list *bgp_debug_update_out_peers;
108extern struct list *bgp_debug_update_prefixes;
9fbdd100 109extern struct list *bgp_debug_bestpath_prefixes;
16286195
DS
110extern struct list *bgp_debug_zebra_prefixes;
111
d62a17ae 112struct bgp_debug_filter {
113 char *host;
114 struct prefix *p;
16286195
DS
115};
116
0b2aa3a0
PJ
117#define BGP_DEBUG_AS4 0x01
118#define BGP_DEBUG_AS4_SEGMENT 0x02
119
9fbdd100 120#define BGP_DEBUG_BESTPATH 0x01
16286195 121#define BGP_DEBUG_NEIGHBOR_EVENTS 0x01
718e3744 122#define BGP_DEBUG_PACKET 0x01
718e3744 123#define BGP_DEBUG_KEEPALIVE 0x01
124#define BGP_DEBUG_UPDATE_IN 0x01
125#define BGP_DEBUG_UPDATE_OUT 0x02
16286195 126#define BGP_DEBUG_UPDATE_PREFIX 0x04
a39275d7 127#define BGP_DEBUG_ZEBRA 0x01
cebb7440 128#define BGP_DEBUG_ALLOW_MARTIANS 0x01
fb018d25 129#define BGP_DEBUG_NHT 0x01
3f9c7369 130#define BGP_DEBUG_UPDATE_GROUPS 0x01
ddb5b488
PZ
131#define BGP_DEBUG_VPN_LEAK_FROM_VRF 0x01
132#define BGP_DEBUG_VPN_LEAK_TO_VRF 0x02
133#define BGP_DEBUG_VPN_LEAK_RMAP_EVENT 0x04
134#define BGP_DEBUG_VPN_LEAK_LABEL 0x08
268e1b9b 135#define BGP_DEBUG_FLOWSPEC 0x01
955bfd98 136#define BGP_DEBUG_LABELPOOL 0x01
1a80fc0f 137#define BGP_DEBUG_PBR 0x01
f146bb54 138#define BGP_DEBUG_PBR_ERROR 0x02
52653398
AK
139#define BGP_DEBUG_EVPN_MH_ES 0x01
140#define BGP_DEBUG_EVPN_MH_RT 0x02
718e3744 141
142#define BGP_DEBUG_PACKET_SEND 0x01
143#define BGP_DEBUG_PACKET_SEND_DETAIL 0x02
144
b0965c44 145#define BGP_DEBUG_GRACEFUL_RESTART 0x01
146
259f4236 147#define BGP_DEBUG_BFD_LIB 0x01
8093d799 148#define BGP_DEBUG_COND_ADV 0x01
259f4236 149
718e3744 150#define CONF_DEBUG_ON(a, b) (conf_bgp_debug_ ## a |= (BGP_DEBUG_ ## b))
151#define CONF_DEBUG_OFF(a, b) (conf_bgp_debug_ ## a &= ~(BGP_DEBUG_ ## b))
152
153#define TERM_DEBUG_ON(a, b) (term_bgp_debug_ ## a |= (BGP_DEBUG_ ## b))
154#define TERM_DEBUG_OFF(a, b) (term_bgp_debug_ ## a &= ~(BGP_DEBUG_ ## b))
155
d62a17ae 156#define DEBUG_ON(a, b) \
157 do { \
158 CONF_DEBUG_ON(a, b); \
159 TERM_DEBUG_ON(a, b); \
160 } while (0)
161#define DEBUG_OFF(a, b) \
162 do { \
163 CONF_DEBUG_OFF(a, b); \
164 TERM_DEBUG_OFF(a, b); \
165 } while (0)
718e3744 166
167#define BGP_DEBUG(a, b) (term_bgp_debug_ ## a & BGP_DEBUG_ ## b)
168#define CONF_BGP_DEBUG(a, b) (conf_bgp_debug_ ## a & BGP_DEBUG_ ## b)
169
2b64873d 170extern const char *const bgp_type_str[];
718e3744 171
c4071e95 172extern bool bgp_dump_attr(struct attr *attr, char *buf, size_t size);
3dc339cd 173extern bool bgp_debug_peer_updout_enabled(char *host);
c4071e95
DS
174extern const char *bgp_notify_code_str(char code);
175extern const char *bgp_notify_subcode_str(char code, char subcode);
eea685b6
DA
176extern void bgp_notify_print(struct peer *peer, struct bgp_notify *bgp_notify,
177 const char *direct, bool hard_reset);
718e3744 178
b2d933f8 179extern const struct message bgp_status_msg[];
d032ddce
DS
180extern bool bgp_debug_neighbor_events(const struct peer *peer);
181extern bool bgp_debug_keepalive(const struct peer *peer);
182extern bool bgp_debug_update(const struct peer *peer, const struct prefix *p,
3dc339cd 183 struct update_group *updgrp, unsigned int inbound);
9bcb3eef 184extern bool bgp_debug_bestpath(struct bgp_dest *dest);
b8685f9b 185extern bool bgp_debug_zebra(const struct prefix *p);
00d252cb 186
6c995628
AD
187extern const char *bgp_debug_rdpfxpath2str(
188 afi_t afi, safi_t safi, const struct prefix_rd *prd,
189 union prefixconstptr pu, mpls_label_t *label, uint32_t num_labels,
190 int addpath_valid, uint32_t addpath_id,
191 struct bgp_route_evpn *overlay_index, char *str, int size);
d7c0a89a 192const char *bgp_notify_admin_message(char *buf, size_t bufsz, uint8_t *data,
d62a17ae 193 size_t datalen);
38de8d02 194
00d252cb 195#endif /* _QUAGGA_BGP_DEBUG_H */