]> git.proxmox.com Git - mirror_frr.git/blame - lib/agg_table.c
Merge pull request #13649 from donaldsharp/unlock_the_node_or_else
[mirror_frr.git] / lib / agg_table.c
CommitLineData
acddc0ed 1// SPDX-License-Identifier: GPL-2.0-or-later
8e1f6512
DS
2/*
3 * Aggregate Route
4 * Copyright (C) 2018 Cumulus Networks, Inc.
5 * Donald Sharp
8e1f6512
DS
6 */
7#include "zebra.h"
8
9#include "agg_table.h"
10
11
12static 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
22static 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
1b3e9a21 31static route_table_delegate_t agg_table_delegate = {
8e1f6512
DS
32 .create_node = agg_node_create,
33 .destroy_node = agg_node_destroy,
34};
35
36struct 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);
6ca30e9e 43 route_table_set_info(at->route_table, at);
8e1f6512
DS
44
45 return at;
46}