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

    1: /*
    2:   PIM for Quagga
    3:   Copyright (C) 2008  Everton da Silva Marques
    4: 
    5:   This program is free software; you can redistribute it and/or modify
    6:   it under the terms of the GNU General Public License as published by
    7:   the Free Software Foundation; either version 2 of the License, or
    8:   (at your option) any later version.
    9: 
   10:   This program is distributed in the hope that it will be useful, but
   11:   WITHOUT ANY WARRANTY; without even the implied warranty of
   12:   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13:   General Public License for more details.
   14:   
   15:   You should have received a copy of the GNU General Public License
   16:   along with this program; see the file COPYING; if not, write to the
   17:   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
   18:   MA 02110-1301 USA
   19:   
   20:   $QuaggaId: $Format:%an, %ai, %h$ $
   21: */
   22: 
   23: #include <zebra.h>
   24: 
   25: #include "if.h"
   26: #include "linklist.h"
   27: 
   28: #include "pimd.h"
   29: #include "pim_vty.h"
   30: #include "pim_iface.h"
   31: #include "pim_cmd.h"
   32: #include "pim_str.h"
   33: #include "pim_ssmpingd.h"
   34: #include "pim_pim.h"
   35: 
   36: int pim_debug_config_write(struct vty *vty)
   37: {
   38:   int writes = 0;
   39: 
   40:   if (PIM_DEBUG_IGMP_EVENTS) {
   41:     vty_out(vty, "debug igmp events%s", VTY_NEWLINE);
   42:     ++writes;
   43:   }
   44:   if (PIM_DEBUG_IGMP_PACKETS) {
   45:     vty_out(vty, "debug igmp packets%s", VTY_NEWLINE);
   46:     ++writes;
   47:   }
   48:   if (PIM_DEBUG_IGMP_TRACE) {
   49:     vty_out(vty, "debug igmp trace%s", VTY_NEWLINE);
   50:     ++writes;
   51:   }
   52: 
   53:   if (PIM_DEBUG_MROUTE) {
   54:     vty_out(vty, "debug mroute%s", VTY_NEWLINE);
   55:     ++writes;
   56:   }
   57: 
   58:   if (PIM_DEBUG_PIM_EVENTS) {
   59:     vty_out(vty, "debug pim events%s", VTY_NEWLINE);
   60:     ++writes;
   61:   }
   62:   if (PIM_DEBUG_PIM_PACKETS) {
   63:     vty_out(vty, "debug pim packets%s", VTY_NEWLINE);
   64:     ++writes;
   65:   }
   66:   if (PIM_DEBUG_PIM_PACKETDUMP_SEND) {
   67:     vty_out(vty, "debug pim packet-dump send%s", VTY_NEWLINE);
   68:     ++writes;
   69:   }
   70:   if (PIM_DEBUG_PIM_PACKETDUMP_RECV) {
   71:     vty_out(vty, "debug pim packet-dump receive%s", VTY_NEWLINE);
   72:     ++writes;
   73:   }
   74:   if (PIM_DEBUG_PIM_TRACE) {
   75:     vty_out(vty, "debug pim trace%s", VTY_NEWLINE);
   76:     ++writes;
   77:   }
   78: 
   79:   if (PIM_DEBUG_ZEBRA) {
   80:     vty_out(vty, "debug pim zebra%s", VTY_NEWLINE);
   81:     ++writes;
   82:   }
   83: 
   84:   if (PIM_DEBUG_SSMPINGD) {
   85:     vty_out(vty, "debug ssmpingd%s", VTY_NEWLINE);
   86:     ++writes;
   87:   }
   88: 
   89:   return writes;
   90: }
   91: 
   92: int pim_global_config_write(struct vty *vty)
   93: {
   94:   int writes = 0;
   95: 
   96:   if (PIM_MROUTE_IS_ENABLED) {
   97:     vty_out(vty, "%s%s", PIM_CMD_IP_MULTICAST_ROUTING, VTY_NEWLINE);
   98:     ++writes;
   99:   }
  100: 
  101:   if (qpim_ssmpingd_list) {
  102:     struct listnode *node;
  103:     struct ssmpingd_sock *ss;
  104:     vty_out(vty, "!%s", VTY_NEWLINE);
  105:     ++writes;
  106:     for (ALL_LIST_ELEMENTS_RO(qpim_ssmpingd_list, node, ss)) {
  107:       char source_str[100];
  108:       pim_inet4_dump("<src?>", ss->source_addr, source_str, sizeof(source_str));
  109:       vty_out(vty, "ip ssmpingd %s%s", source_str, VTY_NEWLINE);
  110:       ++writes;
  111:     }
  112:   }
  113: 
  114:   return writes;
  115: }
  116: 
  117: int pim_interface_config_write(struct vty *vty)
  118: {
  119:   int writes = 0;
  120:   struct listnode *node;
  121:   struct interface *ifp;
  122: 
  123:   for (ALL_LIST_ELEMENTS_RO(iflist, node, ifp)) {
  124: 
  125:     /* IF name */
  126:     vty_out(vty, "interface %s%s", ifp->name, VTY_NEWLINE);
  127:     ++writes;
  128: 
  129:     if (ifp->info) {
  130:       struct pim_interface *pim_ifp = ifp->info;
  131: 
  132:       /* IF ip pim ssm */
  133:       if (PIM_IF_TEST_PIM(pim_ifp->options)) {
  134: 	vty_out(vty, " ip pim ssm%s", VTY_NEWLINE);
  135: 	++writes;
  136:       }
  137: 
  138:       /* IF ip pim drpriority */
  139:       if (pim_ifp->pim_dr_priority != PIM_DEFAULT_DR_PRIORITY) {
  140: 	vty_out(vty, " ip pim drpriority %d%s", pim_ifp->pim_dr_priority,
  141: 		VTY_NEWLINE);
  142: 	++writes;
  143:       }
  144: 
  145:       /* IF ip pim hello */
  146:       if (pim_ifp->pim_hello_period != PIM_DEFAULT_HELLO_PERIOD) {
  147: 	vty_out(vty, " ip pim hello %d", pim_ifp->pim_hello_period);
  148: 	if (pim_ifp->pim_default_holdtime != -1)
  149: 	  vty_out(vty, " %d", pim_ifp->pim_default_holdtime);
  150: 	vty_out(vty, "%s", VTY_NEWLINE);
  151:       }
  152: 
  153:       /* IF ip igmp */
  154:       if (PIM_IF_TEST_IGMP(pim_ifp->options)) {
  155: 	vty_out(vty, " ip igmp%s", VTY_NEWLINE);
  156: 	++writes;
  157:       }
  158: 
  159:       /* IF ip igmp query-interval */
  160:       if (pim_ifp->igmp_default_query_interval != IGMP_GENERAL_QUERY_INTERVAL)
  161: 	{
  162: 	  vty_out(vty, " %s %d%s",
  163: 		  PIM_CMD_IP_IGMP_QUERY_INTERVAL,
  164: 		  pim_ifp->igmp_default_query_interval,
  165: 		  VTY_NEWLINE);
  166: 	  ++writes;
  167: 	}
  168: 
  169:       /* IF ip igmp query-max-response-time */
  170:       if (pim_ifp->igmp_query_max_response_time_dsec != IGMP_QUERY_MAX_RESPONSE_TIME_DSEC)
  171: 	{
  172: 	  vty_out(vty, " %s %d%s",
  173: 		  PIM_CMD_IP_IGMP_QUERY_MAX_RESPONSE_TIME_DSEC,
  174: 		  pim_ifp->igmp_query_max_response_time_dsec,
  175: 		  VTY_NEWLINE);
  176: 	  ++writes;
  177: 	}
  178: 
  179:       /* IF ip igmp join */
  180:       if (pim_ifp->igmp_join_list) {
  181: 	struct listnode *node;
  182: 	struct igmp_join *ij;
  183: 	for (ALL_LIST_ELEMENTS_RO(pim_ifp->igmp_join_list, node, ij)) {
  184: 	  char group_str[100];
  185: 	  char source_str[100];
  186: 	  pim_inet4_dump("<grp?>", ij->group_addr, group_str, sizeof(group_str));
  187: 	  pim_inet4_dump("<src?>", ij->source_addr, source_str, sizeof(source_str));
  188: 	  vty_out(vty, " ip igmp join %s %s%s",
  189: 		  group_str, source_str,
  190: 		  VTY_NEWLINE);
  191: 	  ++writes;
  192: 	}
  193:       }
  194:     }
  195:     vty_out(vty, "!%s", VTY_NEWLINE);
  196:     ++writes;
  197:   }
  198: 
  199:   return writes;
  200: }

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