mirror of
				https://git.proxmox.com/git/mirror_frr
				synced 2025-10-31 18:40:52 +00:00 
			
		
		
		
	 acddc0ed3c
			
		
	
	
		acddc0ed3c
		
	
	
	
	
		
			
			Done with a combination of regex'ing and banging my head against a wall. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
		
			
				
	
	
		
			148 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // SPDX-License-Identifier: GPL-2.0-or-later
 | |
| /*
 | |
|  * EIGRP Dump Functions and Debbuging.
 | |
|  * Copyright (C) 2013-2014
 | |
|  * Authors:
 | |
|  *   Donnie Savage
 | |
|  *   Jan Janovic
 | |
|  *   Matej Perina
 | |
|  *   Peter Orsag
 | |
|  *   Peter Paluch
 | |
|  */
 | |
| 
 | |
| #ifndef _ZEBRA_EIGRPD_DUMP_H_
 | |
| #define _ZEBRA_EIGRPD_DUMP_H_
 | |
| 
 | |
| #define EIGRP_TIME_DUMP_SIZE		16
 | |
| 
 | |
| /* general debug flags */
 | |
| extern unsigned long term_debug_eigrp;
 | |
| #define EIGRP_DEBUG_EVENT		0x01
 | |
| #define EIGRP_DEBUG_DETAIL		0x02
 | |
| #define EIGRP_DEBUG_TIMERS		0x04
 | |
| 
 | |
| /* neighbor debug flags */
 | |
| extern unsigned long term_debug_eigrp_nei;
 | |
| #define EIGRP_DEBUG_NEI				0x01
 | |
| 
 | |
| /* packet debug flags */
 | |
| extern unsigned long term_debug_eigrp_packet[];
 | |
| #define EIGRP_DEBUG_UPDATE			0x01
 | |
| #define EIGRP_DEBUG_REQUEST			0x02
 | |
| #define EIGRP_DEBUG_QUERY			0x04
 | |
| #define EIGRP_DEBUG_REPLY			0x08
 | |
| #define EIGRP_DEBUG_HELLO			0x10
 | |
| #define EIGRP_DEBUG_PROBE			0x40
 | |
| #define EIGRP_DEBUG_ACK 			0x80
 | |
| #define EIGRP_DEBUG_SIAQUERY	    0x200
 | |
| #define EIGRP_DEBUG_SIAREPLY	    0x400
 | |
| #define EIGRP_DEBUG_STUB 			0x800
 | |
| #define EIGRP_DEBUG_PACKETS_ALL     0xfff
 | |
| 
 | |
| extern unsigned long term_debug_eigrp_transmit;
 | |
| #define EIGRP_DEBUG_SEND			0x01
 | |
| #define EIGRP_DEBUG_RECV			0x02
 | |
| #define EIGRP_DEBUG_SEND_RECV		0x03
 | |
| #define EIGRP_DEBUG_PACKET_DETAIL	0x04
 | |
| 
 | |
| /* zebra debug flags */
 | |
| extern unsigned long term_debug_eigrp_zebra;
 | |
| #define EIGRP_DEBUG_ZEBRA_INTERFACE	0x01
 | |
| #define EIGRP_DEBUG_ZEBRA_REDISTRIBUTE	0x02
 | |
| #define EIGRP_DEBUG_ZEBRA		0x03
 | |
| 
 | |
| /* Macro for setting debug option. */
 | |
| #define CONF_DEBUG_NEI_ON(a, b)		conf_debug_eigrp_nei[a] |= (b)
 | |
| #define CONF_DEBUG_NEI_OFF(a, b)	conf_debug_eigrp_nei[a] &= ~(b)
 | |
| #define TERM_DEBUG_NEI_ON(a, b)		term_debug_eigrp_nei[a] |= (b)
 | |
| #define TERM_DEBUG_NEI_OFF(a, b)	term_debug_eigrp_nei[a] &= ~(b)
 | |
| #define DEBUG_NEI_ON(a, b)                                                     \
 | |
| 	do {                                                                   \
 | |
| 		CONF_DEBUG_NEI_ON(a, b);                                       \
 | |
| 		TERM_DEBUG_NEI_ON(a, b);                                       \
 | |
| 	} while (0)
 | |
| #define DEBUG_NEI_OFF(a, b)                                                    \
 | |
| 	do {                                                                   \
 | |
| 		CONF_DEBUG_NEI_OFF(a, b);                                      \
 | |
| 		TERM_DEBUG_NEI_OFF(a, b);                                      \
 | |
| 	} while (0)
 | |
| 
 | |
| #define CONF_DEBUG_PACKET_ON(a, b)	conf_debug_eigrp_packet[a] |= (b)
 | |
| #define CONF_DEBUG_PACKET_OFF(a, b)	conf_debug_eigrp_packet[a] &= ~(b)
 | |
| #define TERM_DEBUG_PACKET_ON(a, b)	term_debug_eigrp_packet[a] |= (b)
 | |
| #define TERM_DEBUG_PACKET_OFF(a, b)	term_debug_eigrp_packet[a] &= ~(b)
 | |
| #define DEBUG_PACKET_ON(a, b)                                                  \
 | |
| 	do {                                                                   \
 | |
| 		CONF_DEBUG_PACKET_ON(a, b);                                    \
 | |
| 		TERM_DEBUG_PACKET_ON(a, b);                                    \
 | |
| 	} while (0)
 | |
| #define DEBUG_PACKET_OFF(a, b)                                                 \
 | |
| 	do {                                                                   \
 | |
| 		CONF_DEBUG_PACKET_OFF(a, b);                                   \
 | |
| 		TERM_DEBUG_PACKET_OFF(a, b);                                   \
 | |
| 	} while (0)
 | |
| 
 | |
| #define CONF_DEBUG_TRANSMIT_ON(a, b)	conf_debug_eigrp_transmit |= (b)
 | |
| #define CONF_DEBUG_TRANSMIT_OFF(a, b)	conf_debug_eigrp_transmit &= ~(b)
 | |
| #define TERM_DEBUG_TRANSMIT_ON(a, b)	term_debug_eigrp_transmit |= (b)
 | |
| #define TERM_DEBUG_TRANSMIT_OFF(a, b)	term_debug_eigrp_transmit &= ~(b)
 | |
| #define DEBUG_TRANSMIT_ON(a, b)                                                \
 | |
| 	do {                                                                   \
 | |
| 		CONF_DEBUG_TRANSMIT_ON(a, b);                                  \
 | |
| 		TERM_DEBUG_TRANSMIT_ON(a, b);                                  \
 | |
| 	} while (0)
 | |
| #define DEBUG_TRANSMIT_OFF(a, b)                                               \
 | |
| 	do {                                                                   \
 | |
| 		CONF_DEBUG_TRANSMIT_OFF(a, b);                                 \
 | |
| 		TERM_DEBUG_TRANSMIT_OFF(a, b);                                 \
 | |
| 	} while (0)
 | |
| 
 | |
| #define CONF_DEBUG_ON(a, b)		conf_debug_eigrp_ ## a |= (EIGRP_DEBUG_ ## b)
 | |
| #define CONF_DEBUG_OFF(a, b)		conf_debug_eigrp_ ## a &= ~(EIGRP_DEBUG_ ## b)
 | |
| #define TERM_DEBUG_ON(a, b)		term_debug_eigrp_ ## a |= (EIGRP_DEBUG_ ## b)
 | |
| #define TERM_DEBUG_OFF(a, b)		term_debug_eigrp_ ## a &= ~(EIGRP_DEBUG_ ## b)
 | |
| #define DEBUG_ON(a, b)                                                         \
 | |
| 	do {                                                                   \
 | |
| 		CONF_DEBUG_ON(a, b);                                           \
 | |
| 		TERM_DEBUG_ON(a, b);                                           \
 | |
| 	} while (0)
 | |
| #define DEBUG_OFF(a, b)                                                        \
 | |
| 	do {                                                                   \
 | |
| 		CONF_DEBUG_OFF(a, b);                                          \
 | |
| 		TERM_DEBUG_OFF(a, b);                                          \
 | |
| 	} while (0)
 | |
| 
 | |
| /* Macro for checking debug option. */
 | |
| #define IS_DEBUG_EIGRP_PACKET(a, b)                                            \
 | |
| 	(term_debug_eigrp_packet[a] & EIGRP_DEBUG_##b)
 | |
| #define IS_DEBUG_EIGRP_TRANSMIT(a, b)                                          \
 | |
| 	(term_debug_eigrp_transmit & EIGRP_DEBUG_##b)
 | |
| #define IS_DEBUG_EIGRP_NEI(a, b) (term_debug_eigrp_nei & EIGRP_DEBUG_##b)
 | |
| #define IS_DEBUG_EIGRP(a, b) (term_debug_eigrp & EIGRP_DEBUG_##b)
 | |
| #define IS_DEBUG_EIGRP_EVENT IS_DEBUG_EIGRP(event, EVENT)
 | |
| 
 | |
| /* Prototypes. */
 | |
| extern const char *eigrp_if_name_string(struct eigrp_interface *);
 | |
| 
 | |
| extern void eigrp_ip_header_dump(struct ip *);
 | |
| extern void eigrp_header_dump(struct eigrp_header *);
 | |
| 
 | |
| extern void show_ip_eigrp_interface_header(struct vty *, struct eigrp *);
 | |
| extern void show_ip_eigrp_neighbor_header(struct vty *, struct eigrp *);
 | |
| extern void show_ip_eigrp_topology_header(struct vty *, struct eigrp *);
 | |
| extern void show_ip_eigrp_interface_detail(struct vty *, struct eigrp *,
 | |
| 					   struct eigrp_interface *);
 | |
| extern void show_ip_eigrp_interface_sub(struct vty *, struct eigrp *,
 | |
| 					struct eigrp_interface *);
 | |
| extern void show_ip_eigrp_neighbor_sub(struct vty *, struct eigrp_neighbor *,
 | |
| 				       int);
 | |
| extern void show_ip_eigrp_prefix_descriptor(struct vty *vty,
 | |
| 					    struct eigrp_prefix_descriptor *tn);
 | |
| extern void show_ip_eigrp_route_descriptor(struct vty *vty, struct eigrp *eigrp,
 | |
| 					   struct eigrp_route_descriptor *ne,
 | |
| 					   bool *first);
 | |
| 
 | |
| extern void eigrp_debug_init(void);
 | |
| 
 | |
| #endif /* _ZEBRA_EIGRPD_DUMP_H_ */
 |