Annotation of embedaddon/quagga/pimd/pim_vty.c, revision 1.1.1.1

1.1       misho       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>