| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| #include <zebra.h> |
| |
| #include "lib/command.h" |
| #include "lib/debug.h" |
| #include "lib/vector.h" |
| |
| #include "vrrp_debug.h" |
| |
| |
| struct debug vrrp_dbg_arp = {0, "VRRP ARP"}; |
| struct debug vrrp_dbg_auto = {0, "VRRP autoconfiguration events"}; |
| struct debug vrrp_dbg_ndisc = {0, "VRRP Neighbor Discovery"}; |
| struct debug vrrp_dbg_pkt = {0, "VRRP packets"}; |
| struct debug vrrp_dbg_proto = {0, "VRRP protocol events"}; |
| struct debug vrrp_dbg_sock = {0, "VRRP sockets"}; |
| struct debug vrrp_dbg_zebra = {0, "VRRP Zebra events"}; |
| |
| struct debug *vrrp_debugs[] = { |
| &vrrp_dbg_arp, |
| &vrrp_dbg_auto, |
| &vrrp_dbg_ndisc, |
| &vrrp_dbg_pkt, |
| &vrrp_dbg_proto, |
| &vrrp_dbg_sock, |
| &vrrp_dbg_zebra |
| }; |
| |
| const char *vrrp_debugs_conflines[] = { |
| "debug vrrp arp", |
| "debug vrrp autoconfigure", |
| "debug vrrp ndisc", |
| "debug vrrp packets", |
| "debug vrrp protocol", |
| "debug vrrp sockets", |
| "debug vrrp zebra", |
| }; |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| static void vrrp_debug_set_all(uint32_t flags, bool set) |
| { |
| for (unsigned int i = 0; i < array_size(vrrp_debugs); i++) { |
| DEBUG_FLAGS_SET(vrrp_debugs[i], flags, set); |
| |
| |
| if (!DEBUG_MODE_CHECK(vrrp_debugs[i], DEBUG_MODE_ALL)) |
| DEBUG_CLEAR(vrrp_debugs[i]); |
| } |
| } |
| |
| static int vrrp_debug_config_write_helper(struct vty *vty, bool config) |
| { |
| uint32_t mode = DEBUG_MODE_ALL; |
| |
| if (config) |
| mode = DEBUG_MODE_CONF; |
| |
| for (unsigned int i = 0; i < array_size(vrrp_debugs); i++) |
| if (DEBUG_MODE_CHECK(vrrp_debugs[i], mode)) |
| vty_out(vty, "%s\n", vrrp_debugs_conflines[i]); |
| |
| return 0; |
| } |
| |
| int vrrp_config_write_debug(struct vty *vty) |
| { |
| return vrrp_debug_config_write_helper(vty, true); |
| } |
| |
| int vrrp_debug_status_write(struct vty *vty) |
| { |
| return vrrp_debug_config_write_helper(vty, false); |
| } |
| |
| void vrrp_debug_set(struct interface *ifp, uint8_t vrid, int vtynode, |
| bool onoff, bool proto, bool autoconf, bool pkt, bool sock, |
| bool ndisc, bool arp, bool zebra) |
| { |
| uint32_t mode = DEBUG_NODE2MODE(vtynode); |
| |
| if (proto) |
| DEBUG_MODE_SET(&vrrp_dbg_proto, mode, onoff); |
| if (autoconf) |
| DEBUG_MODE_SET(&vrrp_dbg_auto, mode, onoff); |
| if (pkt) |
| DEBUG_MODE_SET(&vrrp_dbg_pkt, mode, onoff); |
| if (sock) |
| DEBUG_MODE_SET(&vrrp_dbg_sock, mode, onoff); |
| if (ndisc) |
| DEBUG_MODE_SET(&vrrp_dbg_ndisc, mode, onoff); |
| if (arp) |
| DEBUG_MODE_SET(&vrrp_dbg_arp, mode, onoff); |
| if (zebra) |
| DEBUG_MODE_SET(&vrrp_dbg_zebra, mode, onoff); |
| } |
| |
| |
| |
| struct debug_callbacks vrrp_dbg_cbs = {.debug_set_all = vrrp_debug_set_all}; |
| |
| void vrrp_debug_init(void) |
| { |
| debug_init(&vrrp_dbg_cbs); |
| } |