1/* BGP message debug header. 2 Copyright (C) 1996, 97, 98 Kunihiro Ishiguro 3 4This file is part of GNU Zebra. 5 6GNU Zebra is free software; you can redistribute it and/or modify it 7under the terms of the GNU General Public License as published by the 8Free Software Foundation; either version 2, or (at your option) any 9later version. 10 11GNU Zebra is distributed in the hope that it will be useful, but 12WITHOUT ANY WARRANTY; without even the implied warranty of 13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14General Public License for more details. 15 16You should have received a copy of the GNU General Public License 17along with GNU Zebra; see the file COPYING. If not, write to the Free 18Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 1902111-1307, USA. */ 20 21#ifndef _QUAGGA_BGP_DEBUG_H 22#define _QUAGGA_BGP_DEBUG_H 23 24#include "bgp_attr.h" 25 26/* sort of packet direction */ 27#define DUMP_ON 1 28#define DUMP_SEND 2 29#define DUMP_RECV 4 30 31/* for dump_update */ 32#define DUMP_WITHDRAW 8 33#define DUMP_NLRI 16 34 35/* dump detail */ 36#define DUMP_DETAIL 32 37 38extern int dump_open; 39extern int dump_update; 40extern int dump_keepalive; 41extern int dump_notify; 42 43extern int Debug_Event; 44extern int Debug_Keepalive; 45extern int Debug_Update; 46extern int Debug_Radix; 47 48#define NLRI 1 49#define WITHDRAW 2 50#define NO_OPT 3 51#define SEND 4 52#define RECV 5 53#define DETAIL 6 54 55/* Prototypes. */ 56extern void bgp_debug_init (void); 57extern void bgp_packet_dump (struct stream *); 58 59extern int debug (unsigned int option); 60 61extern unsigned long conf_bgp_debug_as4; 62extern unsigned long conf_bgp_debug_fsm; 63extern unsigned long conf_bgp_debug_events; 64extern unsigned long conf_bgp_debug_packet; 65extern unsigned long conf_bgp_debug_filter; 66extern unsigned long conf_bgp_debug_keepalive; 67extern unsigned long conf_bgp_debug_update; 68extern unsigned long conf_bgp_debug_normal; 69extern unsigned long conf_bgp_debug_zebra; 70 71extern unsigned long term_bgp_debug_as4; 72extern unsigned long term_bgp_debug_fsm; 73extern unsigned long term_bgp_debug_events; 74extern unsigned long term_bgp_debug_packet; 75extern unsigned long term_bgp_debug_filter; 76extern unsigned long term_bgp_debug_keepalive; 77extern unsigned long term_bgp_debug_update; 78extern unsigned long term_bgp_debug_normal; 79extern unsigned long term_bgp_debug_zebra; 80 81#define BGP_DEBUG_AS4 0x01 82#define BGP_DEBUG_AS4_SEGMENT 0x02 83 84#define BGP_DEBUG_FSM 0x01 85#define BGP_DEBUG_EVENTS 0x01 86#define BGP_DEBUG_PACKET 0x01 87#define BGP_DEBUG_FILTER 0x01 88#define BGP_DEBUG_KEEPALIVE 0x01 89#define BGP_DEBUG_UPDATE_IN 0x01 90#define BGP_DEBUG_UPDATE_OUT 0x02 91#define BGP_DEBUG_NORMAL 0x01 92#define BGP_DEBUG_ZEBRA 0x01 93 94#define BGP_DEBUG_PACKET_SEND 0x01 95#define BGP_DEBUG_PACKET_SEND_DETAIL 0x02 96 97#define BGP_DEBUG_PACKET_RECV 0x01 98#define BGP_DEBUG_PACKET_RECV_DETAIL 0x02 99 100#define CONF_DEBUG_ON(a, b) (conf_bgp_debug_ ## a |= (BGP_DEBUG_ ## b)) 101#define CONF_DEBUG_OFF(a, b) (conf_bgp_debug_ ## a &= ~(BGP_DEBUG_ ## b)) 102 103#define TERM_DEBUG_ON(a, b) (term_bgp_debug_ ## a |= (BGP_DEBUG_ ## b)) 104#define TERM_DEBUG_OFF(a, b) (term_bgp_debug_ ## a &= ~(BGP_DEBUG_ ## b)) 105 106#define DEBUG_ON(a, b) \ 107 do { \ 108 CONF_DEBUG_ON(a, b); \ 109 TERM_DEBUG_ON(a, b); \ 110 } while (0) 111#define DEBUG_OFF(a, b) \ 112 do { \ 113 CONF_DEBUG_OFF(a, b); \ 114 TERM_DEBUG_OFF(a, b); \ 115 } while (0) 116 117#define BGP_DEBUG(a, b) (term_bgp_debug_ ## a & BGP_DEBUG_ ## b) 118#define CONF_BGP_DEBUG(a, b) (conf_bgp_debug_ ## a & BGP_DEBUG_ ## b) 119 120extern const char *bgp_type_str[]; 121 122extern int bgp_dump_attr (struct peer *, struct attr *, char *, size_t); 123extern void bgp_notify_print (struct peer *, struct bgp_notify *, const char *); 124 125extern const struct message bgp_status_msg[]; 126extern const int bgp_status_msg_max; 127 128#endif /* _QUAGGA_BGP_DEBUG_H */ 129