]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/network/networkd-nexthop.h
network/nexthop: rename nexthop_owned_by_link() -> nexthop_bound_to_link()
[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;
c16c7808 23 Link *link;
307fe3cd 24 ConfigSection *section;
89fa0133
YW
25 NetworkConfigSource source;
26 NetworkConfigState state;
c16c7808 27
0e9d129c 28 uint8_t protocol;
c16c7808 29
c16c7808 30 uint32_t id;
30f10837 31 bool blackhole;
8c112218 32 int family;
c16c7808 33 union in_addr_union gw;
17f8d8f9
YW
34 uint8_t flags;
35 int onlink; /* Only used in conf parser and nexthop_section_verify(). */
228c3e21 36 Hashmap *group;
75156ccb 37} NextHop;
c16c7808 38
75156ccb 39NextHop *nexthop_free(NextHop *nexthop);
0992f9fb 40
13ffa39f 41void network_drop_invalid_nexthops(Network *network);
c16c7808 42
a0e99a37 43int link_drop_managed_nexthops(Link *link);
25b82b6e 44int link_drop_foreign_nexthops(Link *link);
b4564f4e 45void link_foreignize_nexthops(Link *link);
c133770a 46
76c5a0f2 47int link_request_static_nexthops(Link *link, bool only_ipv4);
76c5a0f2 48
324e3422 49int manager_get_nexthop_by_id(Manager *manager, uint32_t id, NextHop **ret);
454c87b5
YW
50int manager_rtnl_process_nexthop(sd_netlink *rtnl, sd_netlink_message *message, Manager *m);
51
89fa0133
YW
52DEFINE_NETWORK_CONFIG_STATE_FUNCTIONS(NextHop, nexthop);
53
c16c7808
SS
54CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_id);
55CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_gateway);
f1923efc 56CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_family);
2ddd52d1 57CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_onlink);
30f10837 58CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_blackhole);
228c3e21 59CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_group);