File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / isisd / isis_routemap.c
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Sun Jul 21 23:54:38 2013 UTC (10 years, 11 months ago) by misho
Branches: quagga, MAIN
CVS tags: v0_99_22p0, v0_99_22, HEAD
0.99.22

    1: /*
    2:  * IS-IS Rout(e)ing protocol               - isis_routemap.c
    3:  *
    4:  * Copyright (C) 2001,2002   Sampo Saaristo
    5:  *                           Tampere University of Technology      
    6:  *                           Institute of Communications Engineering
    7:  *
    8:  *
    9:  * This program is free software; you can redistribute it and/or modify it 
   10:  * under the terms of the GNU General Public Licenseas published by the Free 
   11:  * Software Foundation; either version 2 of the License, or (at your option) 
   12:  * any later version.
   13:  *
   14:  * This program is distributed in the hope that it will be useful,but WITHOUT 
   15:  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
   16:  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
   17:  * more details.
   18: 
   19:  * You should have received a copy of the GNU General Public License along 
   20:  * with this program; if not, write to the Free Software Foundation, Inc., 
   21:  * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
   22:  */
   23: #include <zebra.h>
   24: 
   25: #include "thread.h"
   26: #include "linklist.h"
   27: #include "vty.h"
   28: #include "log.h"
   29: #include "memory.h"
   30: #include "prefix.h"
   31: #include "hash.h"
   32: #include "if.h"
   33: #include "table.h"
   34: #include "routemap.h"
   35: 
   36: #include "isis_constants.h"
   37: #include "isis_common.h"
   38: #include "isis_flags.h"
   39: #include "dict.h"
   40: #include "isisd.h"
   41: #include "isis_misc.h"
   42: #include "isis_adjacency.h"
   43: #include "isis_circuit.h"
   44: #include "isis_tlv.h"
   45: #include "isis_pdu.h"
   46: #include "isis_lsp.h"
   47: #include "isis_spf.h"
   48: #include "isis_route.h"
   49: #include "isis_zebra.h"
   50: 
   51: extern struct isis *isis;
   52: 
   53: /*
   54:  * Prototypes.
   55:  */
   56: void isis_route_map_upd(const char *);
   57: void isis_route_map_event(route_map_event_t, const char *);
   58: void isis_route_map_init(void);
   59: 
   60: 
   61: void
   62: isis_route_map_upd (const char *name)
   63: {
   64:   int i = 0;
   65: 
   66:   if (!isis)
   67:     return;
   68: 
   69:   for (i = 0; i <= ZEBRA_ROUTE_MAX; i++)
   70:     {
   71:       if (isis->rmap[i].name)
   72: 	isis->rmap[i].map = route_map_lookup_by_name (isis->rmap[i].name);
   73:       else
   74: 	isis->rmap[i].map = NULL;
   75:     }
   76:   /* FIXME: do the address family sub-mode AF_INET6 here ? */
   77: }
   78: 
   79: void
   80: isis_route_map_event (route_map_event_t event, const char *name)
   81: {
   82:   int type;
   83: 
   84:   if (!isis)
   85:     return;
   86: 
   87:   for (type = 0; type <= ZEBRA_ROUTE_MAX; type++)
   88:     {
   89:       if (isis->rmap[type].name && isis->rmap[type].map &&
   90: 	  !strcmp (isis->rmap[type].name, name))
   91: 	{
   92: 	  isis_distribute_list_update (type);
   93: 	}
   94:     }
   95: }
   96: 
   97: void
   98: isis_route_map_init (void)
   99: {
  100:   route_map_init ();
  101:   route_map_init_vty ();
  102: 
  103:   route_map_add_hook (isis_route_map_upd);
  104:   route_map_delete_hook (isis_route_map_upd);
  105:   route_map_event_hook (isis_route_map_event);
  106: }

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