Annotation of embedaddon/quagga/ripd/rip_debug.c, revision 1.1.1.1

1.1       misho       1: /* RIP debug routines
                      2:  * Copyright (C) 1999 Kunihiro Ishiguro <kunihiro@zebra.org>
                      3:  *
                      4:  * This file is part of GNU Zebra.
                      5:  *
                      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
                      9:  * later version.
                     10:  *
                     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.
                     15:  *
                     16:  * You should have received a copy of the GNU General Public License
                     17:  * along with GNU Zebra; see the file COPYING.  If not, write to the Free
                     18:  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
                     19:  * 02111-1307, USA.  
                     20:  */
                     21: 
                     22: #include <zebra.h>
                     23: #include "command.h"
                     24: #include "ripd/rip_debug.h"
                     25: 
                     26: /* For debug statement. */
                     27: unsigned long rip_debug_event = 0;
                     28: unsigned long rip_debug_packet = 0;
                     29: unsigned long rip_debug_zebra = 0;
                     30: 
                     31: DEFUN (show_debugging_rip,
                     32:        show_debugging_rip_cmd,
                     33:        "show debugging rip",
                     34:        SHOW_STR
                     35:        DEBUG_STR
                     36:        RIP_STR)
                     37: {
                     38:   vty_out (vty, "RIP debugging status:%s", VTY_NEWLINE);
                     39: 
                     40:   if (IS_RIP_DEBUG_EVENT)
                     41:     vty_out (vty, "  RIP event debugging is on%s", VTY_NEWLINE);
                     42: 
                     43:   if (IS_RIP_DEBUG_PACKET)
                     44:     {
                     45:       if (IS_RIP_DEBUG_SEND && IS_RIP_DEBUG_RECV)
                     46:        {
                     47:          vty_out (vty, "  RIP packet debugging is on%s",
                     48:                   VTY_NEWLINE);
                     49:        }
                     50:       else
                     51:        {
                     52:          if (IS_RIP_DEBUG_SEND)
                     53:            vty_out (vty, "  RIP packet send debugging is on%s",
                     54:                     VTY_NEWLINE);
                     55:          else
                     56:            vty_out (vty, "  RIP packet receive debugging is on%s",
                     57:                     VTY_NEWLINE);
                     58:        }
                     59:     }
                     60: 
                     61:   if (IS_RIP_DEBUG_ZEBRA)
                     62:     vty_out (vty, "  RIP zebra debugging is on%s", VTY_NEWLINE);
                     63: 
                     64:   return CMD_SUCCESS;
                     65: }
                     66: 
                     67: DEFUN (debug_rip_events,
                     68:        debug_rip_events_cmd,
                     69:        "debug rip events",
                     70:        DEBUG_STR
                     71:        RIP_STR
                     72:        "RIP events\n")
                     73: {
                     74:   rip_debug_event = RIP_DEBUG_EVENT;
                     75:   return CMD_WARNING;
                     76: }
                     77: 
                     78: DEFUN (debug_rip_packet,
                     79:        debug_rip_packet_cmd,
                     80:        "debug rip packet",
                     81:        DEBUG_STR
                     82:        RIP_STR
                     83:        "RIP packet\n")
                     84: {
                     85:   rip_debug_packet = RIP_DEBUG_PACKET;
                     86:   rip_debug_packet |= RIP_DEBUG_SEND;
                     87:   rip_debug_packet |= RIP_DEBUG_RECV;
                     88:   return CMD_SUCCESS;
                     89: }
                     90: 
                     91: DEFUN (debug_rip_packet_direct,
                     92:        debug_rip_packet_direct_cmd,
                     93:        "debug rip packet (recv|send)",
                     94:        DEBUG_STR
                     95:        RIP_STR
                     96:        "RIP packet\n"
                     97:        "RIP receive packet\n"
                     98:        "RIP send packet\n")
                     99: {
                    100:   rip_debug_packet |= RIP_DEBUG_PACKET;
                    101:   if (strncmp ("send", argv[0], strlen (argv[0])) == 0)
                    102:     rip_debug_packet |= RIP_DEBUG_SEND;
                    103:   if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
                    104:     rip_debug_packet |= RIP_DEBUG_RECV;
                    105:   return CMD_SUCCESS;
                    106: }
                    107: 
                    108: /* N.B. the "detail" modifier is a no-op.  we leave this command
                    109:    for legacy compatibility. */
                    110: DEFUN_DEPRECATED (debug_rip_packet_detail,
                    111:        debug_rip_packet_detail_cmd,
                    112:        "debug rip packet (recv|send) detail",
                    113:        DEBUG_STR
                    114:        RIP_STR
                    115:        "RIP packet\n"
                    116:        "RIP receive packet\n"
                    117:        "RIP send packet\n"
                    118:        "Detailed information display\n")
                    119: {
                    120:   rip_debug_packet |= RIP_DEBUG_PACKET;
                    121:   if (strncmp ("send", argv[0], strlen (argv[0])) == 0)
                    122:     rip_debug_packet |= RIP_DEBUG_SEND;
                    123:   if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
                    124:     rip_debug_packet |= RIP_DEBUG_RECV;
                    125:   return CMD_SUCCESS;
                    126: }
                    127: 
                    128: DEFUN (debug_rip_zebra,
                    129:        debug_rip_zebra_cmd,
                    130:        "debug rip zebra",
                    131:        DEBUG_STR
                    132:        RIP_STR
                    133:        "RIP and ZEBRA communication\n")
                    134: {
                    135:   rip_debug_zebra = RIP_DEBUG_ZEBRA;
                    136:   return CMD_WARNING;
                    137: }
                    138: 
                    139: DEFUN (no_debug_rip_events,
                    140:        no_debug_rip_events_cmd,
                    141:        "no debug rip events",
                    142:        NO_STR
                    143:        DEBUG_STR
                    144:        RIP_STR
                    145:        "RIP events\n")
                    146: {
                    147:   rip_debug_event = 0;
                    148:   return CMD_SUCCESS;
                    149: }
                    150: 
                    151: DEFUN (no_debug_rip_packet,
                    152:        no_debug_rip_packet_cmd,
                    153:        "no debug rip packet",
                    154:        NO_STR
                    155:        DEBUG_STR
                    156:        RIP_STR
                    157:        "RIP packet\n")
                    158: {
                    159:   rip_debug_packet = 0;
                    160:   return CMD_SUCCESS;
                    161: }
                    162: 
                    163: DEFUN (no_debug_rip_packet_direct,
                    164:        no_debug_rip_packet_direct_cmd,
                    165:        "no debug rip packet (recv|send)",
                    166:        NO_STR
                    167:        DEBUG_STR
                    168:        RIP_STR
                    169:        "RIP packet\n"
                    170:        "RIP option set for receive packet\n"
                    171:        "RIP option set for send packet\n")
                    172: {
                    173:   if (strncmp ("send", argv[0], strlen (argv[0])) == 0)
                    174:     {
                    175:       if (IS_RIP_DEBUG_RECV)
                    176:        rip_debug_packet &= ~RIP_DEBUG_SEND;
                    177:       else
                    178:        rip_debug_packet = 0;
                    179:     }
                    180:   else if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
                    181:     {
                    182:       if (IS_RIP_DEBUG_SEND)
                    183:        rip_debug_packet &= ~RIP_DEBUG_RECV;
                    184:       else
                    185:        rip_debug_packet = 0;
                    186:     }
                    187:   return CMD_SUCCESS;
                    188: }
                    189: 
                    190: DEFUN (no_debug_rip_zebra,
                    191:        no_debug_rip_zebra_cmd,
                    192:        "no debug rip zebra",
                    193:        NO_STR
                    194:        DEBUG_STR
                    195:        RIP_STR
                    196:        "RIP and ZEBRA communication\n")
                    197: {
                    198:   rip_debug_zebra = 0;
                    199:   return CMD_WARNING;
                    200: }
                    201: 
                    202: /* Debug node. */
                    203: static struct cmd_node debug_node =
                    204: {
                    205:   DEBUG_NODE,
                    206:   "",                          /* Debug node has no interface. */
                    207:   1
                    208: };
                    209: 
                    210: static int
                    211: config_write_debug (struct vty *vty)
                    212: {
                    213:   int write = 0;
                    214: 
                    215:   if (IS_RIP_DEBUG_EVENT)
                    216:     {
                    217:       vty_out (vty, "debug rip events%s", VTY_NEWLINE);
                    218:       write++;
                    219:     }
                    220:   if (IS_RIP_DEBUG_PACKET)
                    221:     {
                    222:       if (IS_RIP_DEBUG_SEND && IS_RIP_DEBUG_RECV)
                    223:        {
                    224:          vty_out (vty, "debug rip packet%s",
                    225:                   VTY_NEWLINE);
                    226:          write++;
                    227:        }
                    228:       else
                    229:        {
                    230:          if (IS_RIP_DEBUG_SEND)
                    231:            vty_out (vty, "debug rip packet send%s",
                    232:                     VTY_NEWLINE);
                    233:          else
                    234:            vty_out (vty, "debug rip packet recv%s",
                    235:                     VTY_NEWLINE);
                    236:          write++;
                    237:        }
                    238:     }
                    239:   if (IS_RIP_DEBUG_ZEBRA)
                    240:     {
                    241:       vty_out (vty, "debug rip zebra%s", VTY_NEWLINE);
                    242:       write++;
                    243:     }
                    244:   return write;
                    245: }
                    246: 
                    247: void
                    248: rip_debug_reset (void)
                    249: {
                    250:   rip_debug_event = 0;
                    251:   rip_debug_packet = 0;
                    252:   rip_debug_zebra = 0;
                    253: }
                    254: 
                    255: void
                    256: rip_debug_init (void)
                    257: {
                    258:   rip_debug_event = 0;
                    259:   rip_debug_packet = 0;
                    260:   rip_debug_zebra = 0;
                    261: 
                    262:   install_node (&debug_node, config_write_debug);
                    263: 
                    264:   install_element (ENABLE_NODE, &show_debugging_rip_cmd);
                    265:   install_element (ENABLE_NODE, &debug_rip_events_cmd);
                    266:   install_element (ENABLE_NODE, &debug_rip_packet_cmd);
                    267:   install_element (ENABLE_NODE, &debug_rip_packet_direct_cmd);
                    268:   install_element (ENABLE_NODE, &debug_rip_packet_detail_cmd);
                    269:   install_element (ENABLE_NODE, &debug_rip_zebra_cmd);
                    270:   install_element (ENABLE_NODE, &no_debug_rip_events_cmd);
                    271:   install_element (ENABLE_NODE, &no_debug_rip_packet_cmd);
                    272:   install_element (ENABLE_NODE, &no_debug_rip_packet_direct_cmd);
                    273:   install_element (ENABLE_NODE, &no_debug_rip_zebra_cmd);
                    274: 
                    275:   install_element (CONFIG_NODE, &debug_rip_events_cmd);
                    276:   install_element (CONFIG_NODE, &debug_rip_packet_cmd);
                    277:   install_element (CONFIG_NODE, &debug_rip_packet_direct_cmd);
                    278:   install_element (CONFIG_NODE, &debug_rip_packet_detail_cmd);
                    279:   install_element (CONFIG_NODE, &debug_rip_zebra_cmd);
                    280:   install_element (CONFIG_NODE, &no_debug_rip_events_cmd);
                    281:   install_element (CONFIG_NODE, &no_debug_rip_packet_cmd);
                    282:   install_element (CONFIG_NODE, &no_debug_rip_packet_direct_cmd);
                    283:   install_element (CONFIG_NODE, &no_debug_rip_zebra_cmd);
                    284: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>