1/* 2 * OSPFd dump routine. 3 * Copyright (C) 1999 Toshiaki Takada 4 * 5 * This file is part of GNU Zebra. 6 * 7 * GNU Zebra is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU General Public License as published by the 9 * Free Software Foundation; either version 2, or (at your option) any 10 * later version. 11 * 12 * GNU Zebra is distributed in the hope that it will be useful, but 13 * WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with GNU Zebra; see the file COPYING. If not, write to the 19 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 20 * Boston, MA 02111-1307, USA. 21 */ 22 23#ifndef _ZEBRA_OSPF_DUMP_H 24#define _ZEBRA_OSPF_DUMP_H 25 26/* Debug Flags. */ 27#define OSPF_DEBUG_HELLO 0x01 28#define OSPF_DEBUG_DB_DESC 0x02 29#define OSPF_DEBUG_LS_REQ 0x04 30#define OSPF_DEBUG_LS_UPD 0x08 31#define OSPF_DEBUG_LS_ACK 0x10 32#define OSPF_DEBUG_ALL 0x1f 33 34#define OSPF_DEBUG_SEND 0x01 35#define OSPF_DEBUG_RECV 0x02 36#define OSPF_DEBUG_SEND_RECV 0x03 37#define OSPF_DEBUG_DETAIL 0x04 38 39#define OSPF_DEBUG_ISM_STATUS 0x01 40#define OSPF_DEBUG_ISM_EVENTS 0x02 41#define OSPF_DEBUG_ISM_TIMERS 0x04 42#define OSPF_DEBUG_ISM 0x07 43#define OSPF_DEBUG_NSM_STATUS 0x01 44#define OSPF_DEBUG_NSM_EVENTS 0x02 45#define OSPF_DEBUG_NSM_TIMERS 0x04 46#define OSPF_DEBUG_NSM 0x07 47 48#define OSPF_DEBUG_LSA_GENERATE 0x01 49#define OSPF_DEBUG_LSA_FLOODING 0x02 50#define OSPF_DEBUG_LSA_INSTALL 0x04 51#define OSPF_DEBUG_LSA_REFRESH 0x08 52#define OSPF_DEBUG_LSA 0x0F 53 54#define OSPF_DEBUG_ZEBRA_INTERFACE 0x01 55#define OSPF_DEBUG_ZEBRA_REDISTRIBUTE 0x02 56#define OSPF_DEBUG_ZEBRA 0x03 57 58#define OSPF_DEBUG_EVENT 0x01 59#define OSPF_DEBUG_NSSA 0x02 60 61/* Macro for setting debug option. */ 62#define CONF_DEBUG_PACKET_ON(a, b) conf_debug_ospf_packet[a] |= (b) 63#define CONF_DEBUG_PACKET_OFF(a, b) conf_debug_ospf_packet[a] &= ~(b) 64#define TERM_DEBUG_PACKET_ON(a, b) term_debug_ospf_packet[a] |= (b) 65#define TERM_DEBUG_PACKET_OFF(a, b) term_debug_ospf_packet[a] &= ~(b) 66#define DEBUG_PACKET_ON(a, b) \ 67 do { \ 68 CONF_DEBUG_PACKET_ON(a, b); \ 69 TERM_DEBUG_PACKET_ON(a, b); \ 70 } while (0) 71#define DEBUG_PACKET_OFF(a, b) \ 72 do { \ 73 CONF_DEBUG_PACKET_OFF(a, b); \ 74 TERM_DEBUG_PACKET_OFF(a, b); \ 75 } while (0) 76 77#define CONF_DEBUG_ON(a, b) conf_debug_ospf_ ## a |= (OSPF_DEBUG_ ## b) 78#define CONF_DEBUG_OFF(a, b) conf_debug_ospf_ ## a &= ~(OSPF_DEBUG_ ## b) 79#define TERM_DEBUG_ON(a, b) term_debug_ospf_ ## a |= (OSPF_DEBUG_ ## b) 80#define TERM_DEBUG_OFF(a, b) term_debug_ospf_ ## a &= ~(OSPF_DEBUG_ ## b) 81#define DEBUG_ON(a, b) \ 82 do { \ 83 CONF_DEBUG_ON(a, b); \ 84 TERM_DEBUG_ON(a, b); \ 85 } while (0) 86#define DEBUG_OFF(a, b) \ 87 do { \ 88 CONF_DEBUG_OFF(a, b); \ 89 TERM_DEBUG_OFF(a, b); \ 90 } while (0) 91 92/* Macro for checking debug option. */ 93#define IS_DEBUG_OSPF_PACKET(a, b) \ 94 (term_debug_ospf_packet[a] & OSPF_DEBUG_ ## b) 95#define IS_DEBUG_OSPF(a, b) \ 96 (term_debug_ospf_ ## a & OSPF_DEBUG_ ## b) 97#define IS_DEBUG_OSPF_EVENT IS_DEBUG_OSPF(event,EVENT) 98 99#define IS_DEBUG_OSPF_NSSA IS_DEBUG_OSPF(nssa,NSSA) 100 101#define IS_CONF_DEBUG_OSPF_PACKET(a, b) \ 102 (conf_debug_ospf_packet[a] & OSPF_DEBUG_ ## b) 103#define IS_CONF_DEBUG_OSPF(a, b) \ 104 (conf_debug_ospf_ ## a & OSPF_DEBUG_ ## b) 105 106#ifdef ORIGINAL_CODING 107#else /* ORIGINAL_CODING */ 108struct stream; 109#endif /* ORIGINAL_CODING */ 110 111#define AREA_NAME(A) ospf_area_name_string ((A)) 112#define IF_NAME(I) ospf_if_name_string ((I)) 113 114/* Extern debug flag. */ 115extern unsigned long term_debug_ospf_packet[]; 116extern unsigned long term_debug_ospf_event; 117extern unsigned long term_debug_ospf_ism; 118extern unsigned long term_debug_ospf_nsm; 119extern unsigned long term_debug_ospf_lsa; 120extern unsigned long term_debug_ospf_zebra; 121extern unsigned long term_debug_ospf_nssa; 122 123/* Message Strings. */ 124extern char *ospf_lsa_type_str[]; 125extern const struct message ospf_auth_type_str[]; 126extern const size_t ospf_auth_type_str_max; 127 128/* Prototypes. */ 129extern const char *ospf_area_name_string (struct ospf_area *); 130extern const char *ospf_area_desc_string (struct ospf_area *); 131extern const char *ospf_if_name_string (struct ospf_interface *); 132extern void ospf_nbr_state_message (struct ospf_neighbor *, char *, size_t); 133extern char *ospf_options_dump (u_char); 134extern const char *ospf_timer_dump (struct thread *, char *, size_t); 135extern const char *ospf_timeval_dump (struct timeval *, char *, size_t); 136extern void ospf_ip_header_dump (struct ip *); 137extern void ospf_packet_dump (struct stream *); 138extern void ospf_lsa_header_dump (struct lsa_header *); 139extern void debug_init (void); 140 141/* Appropriate buffer size to use with ospf_timer_dump and ospf_timeval_dump: */ 142#define OSPF_TIME_DUMP_SIZE 16 143 144#endif /* _ZEBRA_OSPF_DUMP_H */ 145