Annotation of embedaddon/quagga/isisd/isis_routemap.c, revision 1.1.1.1
1.1 misho 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 "dict.h"
39: #include "isisd.h"
40: #include "isis_misc.h"
41: #include "isis_adjacency.h"
42: #include "isis_circuit.h"
43: #include "isis_tlv.h"
44: #include "isis_pdu.h"
45: #include "isis_lsp.h"
46: #include "isis_spf.h"
47: #include "isis_route.h"
48: #include "isis_zebra.h"
49:
50: extern struct isis *isis;
51:
52: /*
53: * Prototypes.
54: */
55: void isis_route_map_upd(const char *);
56: void isis_route_map_event(route_map_event_t, const char *);
57: void isis_route_map_init(void);
58:
59:
60: void
61: isis_route_map_upd (const char *name)
62: {
63: int i = 0;
64:
65: if (!isis)
66: return;
67:
68: for (i = 0; i <= ZEBRA_ROUTE_MAX; i++)
69: {
70: if (isis->rmap[i].name)
71: isis->rmap[i].map = isis->rmap[i].map =
72: 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>