]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/network/networkd-nexthop.h
network/nexthop: cache requested nexthop IDs
[thirdparty/systemd.git] / src / network / networkd-nexthop.h
CommitLineData
db9ecf05 1/* SPDX-License-Identifier: LGPL-2.1-or-later
c16c7808
SS
2 * Copyright © 2019 VMware, Inc.
3 */
4
5#pragma once
6
75156ccb 7#include <inttypes.h>
c16c7808 8
75156ccb 9#include "sd-netlink.h"
c16c7808 10
75156ccb 11#include "conf-parser.h"
228c3e21 12#include "hashmap.h"
75156ccb 13#include "in-addr-util.h"
c16c7808
SS
14#include "networkd-util.h"
15
75156ccb
YW
16typedef struct Link Link;
17typedef struct Manager Manager;
18typedef struct Network Network;
19
20typedef struct NextHop {
c16c7808 21 Network *network;
30f10837 22 Manager *manager;
307fe3cd 23 ConfigSection *section;
89fa0133
YW
24 NetworkConfigSource source;
25 NetworkConfigState state;
c16c7808 26
0e9d129c 27 uint8_t protocol;
352eba2e 28 int ifindex;
c16c7808 29 uint32_t id;
30f10837 30 bool blackhole;
8c112218 31 int family;
c16c7808 32 union in_addr_union gw;
17f8d8f9
YW
33 uint8_t flags;
34 int onlink; /* Only used in conf parser and nexthop_section_verify(). */
228c3e21 35 Hashmap *group;
75156ccb 36} NextHop;
c16c7808 37
75156ccb 38NextHop *nexthop_free(NextHop *nexthop);
0992f9fb 39
015b2432 40int network_drop_invalid_nexthops(Network *network);
c16c7808 41
352eba2e
YW
42int link_drop_nexthops(Link *link, bool foreign);
43static inline int link_drop_foreign_nexthops(Link *link) {
44 return link_drop_nexthops(link, /* foreign = */ true);
45}
46static inline int link_drop_managed_nexthops(Link *link) {
47 return link_drop_nexthops(link, /* foreign = */ false);
48}
b4564f4e 49void link_foreignize_nexthops(Link *link);
c133770a 50
76c5a0f2 51int link_request_static_nexthops(Link *link, bool only_ipv4);
76c5a0f2 52
ac217903 53int nexthop_get_by_id(Manager *manager, uint32_t id, NextHop **ret);
454c87b5 54int manager_rtnl_process_nexthop(sd_netlink *rtnl, sd_netlink_message *message, Manager *m);
fb126bb1 55int manager_build_nexthop_ids(Manager *manager);
454c87b5 56
89fa0133
YW
57DEFINE_NETWORK_CONFIG_STATE_FUNCTIONS(NextHop, nexthop);
58
c16c7808
SS
59CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_id);
60CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_gateway);
f1923efc 61CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_family);
2ddd52d1 62CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_onlink);
30f10837 63CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_blackhole);
228c3e21 64CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_group);