1 /* BGP message debug header.
2 * Copyright (C) 1996, 97, 98 Kunihiro Ishiguro
4 * This file is part of GNU Zebra.
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
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.
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
21 #ifndef _QUAGGA_BGP_DEBUG_H
22 #define _QUAGGA_BGP_DEBUG_H
25 #include "bgp_updgrp.h"
27 /* sort of packet direction */
33 #define DUMP_WITHDRAW 8
37 #define DUMP_DETAIL 32
39 /* RD + Prefix + Path-Id */
40 #define BGP_PRD_PATH_STRLEN (PREFIX_STRLEN + RD_ADDRSTRLEN + 20)
43 extern int dump_update
;
44 extern int dump_keepalive
;
45 extern int dump_notify
;
47 extern int Debug_Event
;
48 extern int Debug_Keepalive
;
49 extern int Debug_Update
;
50 extern int Debug_Radix
;
60 extern void bgp_debug_init (void);
61 extern void bgp_packet_dump (struct stream
*);
63 extern int debug (unsigned int option
);
65 extern unsigned long conf_bgp_debug_as4
;
66 extern unsigned long conf_bgp_debug_neighbor_events
;
67 extern unsigned long conf_bgp_debug_packet
;
68 extern unsigned long conf_bgp_debug_keepalive
;
69 extern unsigned long conf_bgp_debug_update
;
70 extern unsigned long conf_bgp_debug_bestpath
;
71 extern unsigned long conf_bgp_debug_zebra
;
72 extern unsigned long conf_bgp_debug_allow_martians
;
73 extern unsigned long conf_bgp_debug_nht
;
74 extern unsigned long conf_bgp_debug_update_groups
;
76 extern unsigned long term_bgp_debug_as4
;
77 extern unsigned long term_bgp_debug_neighbor_events
;
78 extern unsigned long term_bgp_debug_packet
;
79 extern unsigned long term_bgp_debug_keepalive
;
80 extern unsigned long term_bgp_debug_update
;
81 extern unsigned long term_bgp_debug_bestpath
;
82 extern unsigned long term_bgp_debug_zebra
;
83 extern unsigned long term_bgp_debug_allow_martians
;
84 extern unsigned long term_bgp_debug_nht
;
85 extern unsigned long term_bgp_debug_update_groups
;
87 extern struct list
*bgp_debug_neighbor_events_peers
;
88 extern struct list
*bgp_debug_keepalive_peers
;
89 extern struct list
*bgp_debug_update_in_peers
;
90 extern struct list
*bgp_debug_update_out_peers
;
91 extern struct list
*bgp_debug_update_prefixes
;
92 extern struct list
*bgp_debug_bestpath_prefixes
;
93 extern struct list
*bgp_debug_zebra_prefixes
;
95 struct bgp_debug_filter
101 #define BGP_DEBUG_AS4 0x01
102 #define BGP_DEBUG_AS4_SEGMENT 0x02
104 #define BGP_DEBUG_BESTPATH 0x01
105 #define BGP_DEBUG_NEIGHBOR_EVENTS 0x01
106 #define BGP_DEBUG_PACKET 0x01
107 #define BGP_DEBUG_KEEPALIVE 0x01
108 #define BGP_DEBUG_UPDATE_IN 0x01
109 #define BGP_DEBUG_UPDATE_OUT 0x02
110 #define BGP_DEBUG_UPDATE_PREFIX 0x04
111 #define BGP_DEBUG_ZEBRA 0x01
112 #define BGP_DEBUG_ALLOW_MARTIANS 0x01
113 #define BGP_DEBUG_NHT 0x01
114 #define BGP_DEBUG_UPDATE_GROUPS 0x01
116 #define BGP_DEBUG_PACKET_SEND 0x01
117 #define BGP_DEBUG_PACKET_SEND_DETAIL 0x02
119 #define CONF_DEBUG_ON(a, b) (conf_bgp_debug_ ## a |= (BGP_DEBUG_ ## b))
120 #define CONF_DEBUG_OFF(a, b) (conf_bgp_debug_ ## a &= ~(BGP_DEBUG_ ## b))
122 #define TERM_DEBUG_ON(a, b) (term_bgp_debug_ ## a |= (BGP_DEBUG_ ## b))
123 #define TERM_DEBUG_OFF(a, b) (term_bgp_debug_ ## a &= ~(BGP_DEBUG_ ## b))
125 #define DEBUG_ON(a, b) \
127 CONF_DEBUG_ON(a, b); \
128 TERM_DEBUG_ON(a, b); \
130 #define DEBUG_OFF(a, b) \
132 CONF_DEBUG_OFF(a, b); \
133 TERM_DEBUG_OFF(a, b); \
136 #define BGP_DEBUG(a, b) (term_bgp_debug_ ## a & BGP_DEBUG_ ## b)
137 #define CONF_BGP_DEBUG(a, b) (conf_bgp_debug_ ## a & BGP_DEBUG_ ## b)
139 extern const char *bgp_type_str
[];
141 extern int bgp_dump_attr (struct attr
*, char *, size_t);
142 extern int bgp_debug_peer_updout_enabled(char *host
);
143 extern const char *bgp_notify_code_str(char);
144 extern const char *bgp_notify_subcode_str(char, char);
145 extern void bgp_notify_print (struct peer
*, struct bgp_notify
*, const char *);
147 extern const struct message bgp_status_msg
[];
148 extern const int bgp_status_msg_max
;
149 extern int bgp_debug_neighbor_events(struct peer
*peer
);
150 extern int bgp_debug_keepalive(struct peer
*peer
);
151 extern int bgp_debug_update(struct peer
*peer
, struct prefix
*p
,
152 struct update_group
*updgrp
, unsigned int inbound
);
153 extern int bgp_debug_bestpath(struct prefix
*p
);
154 extern int bgp_debug_zebra(struct prefix
*p
);
156 extern int bgp_debug_count(void);
157 extern const char *bgp_debug_rdpfxpath2str (struct prefix_rd
*, union prefixconstptr
,
158 int, u_int32_t
, char *, int);
159 const char *bgp_notify_admin_message(char *buf
, size_t bufsz
, u_char
*data
, size_t datalen
);
161 #endif /* _QUAGGA_BGP_DEBUG_H */