]>
Commit | Line | Data |
---|---|---|
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 |
16 | typedef struct Link Link; |
17 | typedef struct Manager Manager; | |
18 | typedef struct Network Network; | |
19 | ||
20 | typedef 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 | 38 | NextHop *nexthop_free(NextHop *nexthop); |
0992f9fb | 39 | |
13ffa39f | 40 | void network_drop_invalid_nexthops(Network *network); |
c16c7808 | 41 | |
352eba2e YW |
42 | int link_drop_nexthops(Link *link, bool foreign); |
43 | static inline int link_drop_foreign_nexthops(Link *link) { | |
44 | return link_drop_nexthops(link, /* foreign = */ true); | |
45 | } | |
46 | static inline int link_drop_managed_nexthops(Link *link) { | |
47 | return link_drop_nexthops(link, /* foreign = */ false); | |
48 | } | |
b4564f4e | 49 | void link_foreignize_nexthops(Link *link); |
c133770a | 50 | |
76c5a0f2 | 51 | int link_request_static_nexthops(Link *link, bool only_ipv4); |
76c5a0f2 | 52 | |
ac217903 | 53 | int nexthop_get_by_id(Manager *manager, uint32_t id, NextHop **ret); |
454c87b5 YW |
54 | int manager_rtnl_process_nexthop(sd_netlink *rtnl, sd_netlink_message *message, Manager *m); |
55 | ||
89fa0133 YW |
56 | DEFINE_NETWORK_CONFIG_STATE_FUNCTIONS(NextHop, nexthop); |
57 | ||
c16c7808 SS |
58 | CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_id); |
59 | CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_gateway); | |
f1923efc | 60 | CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_family); |
2ddd52d1 | 61 | CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_onlink); |
30f10837 | 62 | CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_blackhole); |
228c3e21 | 63 | CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_group); |