]> git.proxmox.com Git - mirror_frr.git/blob - lib/agg_table.c
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / lib / agg_table.c
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * Aggregate Route
4 * Copyright (C) 2018 Cumulus Networks, Inc.
5 * Donald Sharp
6 */
7 #include "zebra.h"
8
9 #include "agg_table.h"
10
11
12 static struct route_node *agg_node_create(route_table_delegate_t *delegate,
13 struct route_table *table)
14 {
15 struct agg_node *node;
16
17 node = XCALLOC(MTYPE_TMP, sizeof(struct agg_node));
18
19 return agg_node_to_rnode(node);
20 }
21
22 static void agg_node_destroy(route_table_delegate_t *delegate,
23 struct route_table *table, struct route_node *node)
24
25 {
26 struct agg_node *anode = agg_node_from_rnode(node);
27
28 XFREE(MTYPE_TMP, anode);
29 }
30
31 static route_table_delegate_t agg_table_delegate = {
32 .create_node = agg_node_create,
33 .destroy_node = agg_node_destroy,
34 };
35
36 struct agg_table *agg_table_init(void)
37 {
38 struct agg_table *at;
39
40 at = XCALLOC(MTYPE_TMP, sizeof(struct agg_table));
41
42 at->route_table = route_table_init_with_delegate(&agg_table_delegate);
43 route_table_set_info(at->route_table, at);
44
45 return at;
46 }