ripng_debug.c
上传用户:xiaozhuqw
上传日期:2009-11-15
资源大小:1338k
文件大小:8k
源码类别:

网络

开发平台:

Unix_Linux

  1. /*
  2.  * RIPng debug output routines
  3.  * Copyright (C) 1998 Kunihiro Ishiguro
  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 Free
  19.  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  20.  * 02111-1307, USA.  
  21.  */
  22. #include <zebra.h>
  23. #include "command.h"
  24. #include "ripngd/ripng_debug.h"
  25. /* For debug statement. */
  26. unsigned long ripng_debug_event = 0;
  27. unsigned long ripng_debug_packet = 0;
  28. unsigned long ripng_debug_zebra = 0;
  29. DEFUN (debug_ripng_events,
  30.        debug_ripng_events_cmd,
  31.        "debug ripng events",
  32.        DEBUG_STR
  33.        "RIPng configurationn"
  34.        "Debug option set for ripng eventsn")
  35. {
  36.   ripng_debug_event = RIPNG_DEBUG_EVENT;
  37.   return CMD_WARNING;
  38. }
  39. DEFUN (debug_ripng_packet,
  40.        debug_ripng_packet_cmd,
  41.        "debug ripng packet",
  42.        DEBUG_STR
  43.        "RIPng configurationn"
  44.        "Debug option set for ripng packetn")
  45. {
  46.   ripng_debug_packet = RIPNG_DEBUG_PACKET;
  47.   ripng_debug_packet |= RIPNG_DEBUG_SEND;
  48.   ripng_debug_packet |= RIPNG_DEBUG_RECV;
  49.   return CMD_SUCCESS;
  50. }
  51. DEFUN (debug_ripng_packet_direct,
  52.        debug_ripng_packet_direct_cmd,
  53.        "debug ripng packet (recv|send)",
  54.        DEBUG_STR
  55.        "RIPng configurationn"
  56.        "Debug option set for ripng packetn"
  57.        "Debug option set for receive packetn"
  58.        "Debug option set for send packetn")
  59. {
  60.   ripng_debug_packet |= RIPNG_DEBUG_PACKET;
  61.   if (strncmp ("send", argv[0], strlen (argv[0])) == 0)
  62.     ripng_debug_packet |= RIPNG_DEBUG_SEND;
  63.   if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
  64.     ripng_debug_packet |= RIPNG_DEBUG_RECV;
  65.   ripng_debug_packet &= ~RIPNG_DEBUG_DETAIL;
  66.   return CMD_SUCCESS;
  67. }
  68. DEFUN (debug_ripng_packet_detail,
  69.        debug_ripng_packet_detail_cmd,
  70.        "debug ripng packet (recv|send) detail",
  71.        DEBUG_STR
  72.        "RIPng configurationn"
  73.        "Debug option set for ripng packetn"
  74.        "Debug option set for receive packetn"
  75.        "Debug option set for send packetn"
  76.        "Debug option set detaied informationn")
  77. {
  78.   ripng_debug_packet |= RIPNG_DEBUG_PACKET;
  79.   if (strncmp ("send", argv[0], strlen (argv[0])) == 0)
  80.     ripng_debug_packet |= RIPNG_DEBUG_SEND;
  81.   if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
  82.     ripng_debug_packet |= RIPNG_DEBUG_RECV;
  83.   ripng_debug_packet |= RIPNG_DEBUG_DETAIL;
  84.   return CMD_SUCCESS;
  85. }
  86. DEFUN (debug_ripng_zebra,
  87.        debug_ripng_zebra_cmd,
  88.        "debug ripng zebra",
  89.        DEBUG_STR
  90.        "RIPng configurationn"
  91.        "Debug option set for ripng and zebra communicationn")
  92. {
  93.   ripng_debug_zebra = RIPNG_DEBUG_ZEBRA;
  94.   return CMD_WARNING;
  95. }
  96. DEFUN (no_debug_ripng_events,
  97.        no_debug_ripng_events_cmd,
  98.        "no debug ripng events",
  99.        NO_STR
  100.        DEBUG_STR
  101.        "RIPng configurationn"
  102.        "Debug option set for ripng eventsn")
  103. {
  104.   ripng_debug_event = 0;
  105.   return CMD_SUCCESS;
  106. }
  107. DEFUN (no_debug_ripng_packet,
  108.        no_debug_ripng_packet_cmd,
  109.        "no debug ripng packet",
  110.        NO_STR
  111.        DEBUG_STR
  112.        "RIPng configurationn"
  113.        "Debug option set for ripng packetn")
  114. {
  115.   ripng_debug_packet = 0;
  116.   return CMD_SUCCESS;
  117. }
  118. DEFUN (no_debug_ripng_packet_direct,
  119.        no_debug_ripng_packet_direct_cmd,
  120.        "no debug ripng packet (recv|send)",
  121.        NO_STR
  122.        DEBUG_STR
  123.        "RIPng configurationn"
  124.        "Debug option set for ripng packetn"
  125.        "Debug option set for receive packetn"
  126.        "Debug option set for send packetn")
  127. {
  128.   if (strncmp ("send", argv[0], strlen (argv[0])) == 0)
  129.     {
  130.       if (IS_RIPNG_DEBUG_RECV)
  131.        ripng_debug_packet &= ~RIPNG_DEBUG_SEND;
  132.       else
  133.        ripng_debug_packet = 0;
  134.     }
  135.   else if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
  136.     {
  137.       if (IS_RIPNG_DEBUG_SEND)
  138.        ripng_debug_packet &= ~RIPNG_DEBUG_RECV;
  139.       else
  140.        ripng_debug_packet = 0;
  141.     }
  142.   return CMD_SUCCESS;
  143. }
  144. DEFUN (no_debug_ripng_zebra,
  145.        no_debug_ripng_zebra_cmd,
  146.        "no debug ripng zebra",
  147.        NO_STR
  148.        DEBUG_STR
  149.        "RIPng configurationn"
  150.        "Debug option set for ripng and zebra communicationn")
  151. {
  152.   ripng_debug_zebra = 0;
  153.   return CMD_WARNING;
  154. }
  155. DEFUN (show_debugging_ripng,
  156.        show_debugging_ripng_cmd,
  157.        "show debugging ripng",
  158.        SHOW_STR
  159.        "RIPng configurationn"
  160.        "Debugging informationn")
  161. {
  162.   vty_out (vty, "Zebra debugging status:%s", VTY_NEWLINE);
  163.   if (IS_RIPNG_DEBUG_EVENT)
  164.     vty_out (vty, "  RIPng event debugging is on%s", VTY_NEWLINE);
  165.   if (IS_RIPNG_DEBUG_PACKET)
  166.     {
  167.       if (IS_RIPNG_DEBUG_SEND && IS_RIPNG_DEBUG_RECV)
  168. {
  169.   vty_out (vty, "  RIPng packet%s debugging is on%s",
  170.    IS_RIPNG_DEBUG_DETAIL ? " detail" : "",
  171.    VTY_NEWLINE);
  172. }
  173.       else
  174. {
  175.   if (IS_RIPNG_DEBUG_SEND)
  176.     vty_out (vty, "  RIPng packet send%s debugging is on%s",
  177.      IS_RIPNG_DEBUG_DETAIL ? " detail" : "",
  178.      VTY_NEWLINE);
  179.   else
  180.     vty_out (vty, "  RIPng packet receive%s debugging is on%s",
  181.      IS_RIPNG_DEBUG_DETAIL ? " detail" : "",
  182.      VTY_NEWLINE);
  183. }
  184.     }
  185.   if (IS_RIPNG_DEBUG_ZEBRA)
  186.     vty_out (vty, "  RIPng zebra debugging is on%s", VTY_NEWLINE);
  187.   return CMD_SUCCESS;
  188. }
  189. /* Debug node. */
  190. struct cmd_node debug_node =
  191. {
  192.   DEBUG_NODE,
  193.   "" /* Debug node has no interface. */
  194. };
  195. int
  196. config_write_debug (struct vty *vty)
  197. {
  198.   int write = 0;
  199.   if (IS_RIPNG_DEBUG_EVENT)
  200.     {
  201.       vty_out (vty, "debug ripng events%s", VTY_NEWLINE);
  202.       write++;
  203.     }
  204.   if (IS_RIPNG_DEBUG_PACKET)
  205.     {
  206.       if (IS_RIPNG_DEBUG_SEND && IS_RIPNG_DEBUG_RECV)
  207. {
  208.   vty_out (vty, "debug ripng packet%s%s",
  209.    IS_RIPNG_DEBUG_DETAIL ? " detail" : "",
  210.    VTY_NEWLINE);
  211.   write++;
  212. }
  213.       else
  214. {
  215.   if (IS_RIPNG_DEBUG_SEND)
  216.     vty_out (vty, "debug ripng packet send%s%s",
  217.      IS_RIPNG_DEBUG_DETAIL ? " detail" : "",
  218.      VTY_NEWLINE);
  219.   else
  220.     vty_out (vty, "debug ripng packet recv%s%s",
  221.      IS_RIPNG_DEBUG_DETAIL ? " detail" : "",
  222.      VTY_NEWLINE);
  223.   write++;
  224. }
  225.     }
  226.   if (IS_RIPNG_DEBUG_ZEBRA)
  227.     {
  228.       vty_out (vty, "debug ripng zebra%s", VTY_NEWLINE);
  229.       write++;
  230.     }
  231.   return write;
  232. }
  233. void
  234. ripng_debug_reset ()
  235. {
  236.   ripng_debug_event = 0;
  237.   ripng_debug_packet = 0;
  238.   ripng_debug_zebra = 0;
  239. }
  240. void
  241. ripng_debug_init ()
  242. {
  243.   ripng_debug_event = 0;
  244.   ripng_debug_packet = 0;
  245.   ripng_debug_zebra = 0;
  246.   install_node (&debug_node, config_write_debug);
  247.   install_element (ENABLE_NODE, &show_debugging_ripng_cmd);
  248.   install_element (ENABLE_NODE, &debug_ripng_events_cmd);
  249.   install_element (ENABLE_NODE, &debug_ripng_packet_cmd);
  250.   install_element (ENABLE_NODE, &debug_ripng_packet_direct_cmd);
  251.   install_element (ENABLE_NODE, &debug_ripng_packet_detail_cmd);
  252.   install_element (ENABLE_NODE, &debug_ripng_zebra_cmd);
  253.   install_element (ENABLE_NODE, &no_debug_ripng_events_cmd);
  254.   install_element (ENABLE_NODE, &no_debug_ripng_packet_cmd);
  255.   install_element (ENABLE_NODE, &no_debug_ripng_packet_direct_cmd);
  256.   install_element (ENABLE_NODE, &no_debug_ripng_zebra_cmd);
  257.   install_element (CONFIG_NODE, &debug_ripng_events_cmd);
  258.   install_element (CONFIG_NODE, &debug_ripng_packet_cmd);
  259.   install_element (CONFIG_NODE, &debug_ripng_packet_direct_cmd);
  260.   install_element (CONFIG_NODE, &debug_ripng_packet_detail_cmd);
  261.   install_element (CONFIG_NODE, &debug_ripng_zebra_cmd);
  262.   install_element (CONFIG_NODE, &no_debug_ripng_events_cmd);
  263.   install_element (CONFIG_NODE, &no_debug_ripng_packet_cmd);
  264.   install_element (CONFIG_NODE, &no_debug_ripng_packet_direct_cmd);
  265.   install_element (CONFIG_NODE, &no_debug_ripng_zebra_cmd);
  266.   install_element (VIEW_NODE, &show_debugging_ripng_cmd);
  267. }