File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / ripd / rip_debug.c
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Nov 2 10:09:10 2016 UTC (7 years, 7 months ago) by misho
Branches: quagga, MAIN
CVS tags: v1_0_20160315, HEAD
quagga 1.0.20160315

    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>