Line | Count | Source |
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 | 0 | { |
15 | 0 | struct agg_node *node; |
16 | |
|
17 | 0 | node = XCALLOC(MTYPE_TMP, sizeof(struct agg_node)); |
18 | |
|
19 | 0 | return agg_node_to_rnode(node); |
20 | 0 | } |
21 | | |
22 | | static void agg_node_destroy(route_table_delegate_t *delegate, |
23 | | struct route_table *table, struct route_node *node) |
24 | | |
25 | 0 | { |
26 | 0 | struct agg_node *anode = agg_node_from_rnode(node); |
27 | |
|
28 | 0 | XFREE(MTYPE_TMP, anode); |
29 | 0 | } |
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 | 13 | { |
38 | 13 | struct agg_table *at; |
39 | | |
40 | 13 | at = XCALLOC(MTYPE_TMP, sizeof(struct agg_table)); |
41 | | |
42 | 13 | at->route_table = route_table_init_with_delegate(&agg_table_delegate); |
43 | 13 | route_table_set_info(at->route_table, at); |
44 | | |
45 | 13 | return at; |
46 | 13 | } |