]>
Commit | Line | Data |
---|---|---|
53e1b683 | 1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
fc2f9534 LP |
2 | #pragma once |
3 | ||
4 | /*** | |
96b2fb93 | 5 | Copyright © 2013 Tom Gundersen <teg@jklm.no> |
fc2f9534 LP |
6 | ***/ |
7 | ||
a2106925 LP |
8 | #include "conf-parser.h" |
9 | ||
fc2f9534 | 10 | typedef struct Route Route; |
f4859fc7 | 11 | typedef struct NetworkConfigSection NetworkConfigSection; |
fc2f9534 | 12 | |
fc2f9534 LP |
13 | #include "networkd-network.h" |
14 | ||
15 | struct Route { | |
16 | Network *network; | |
f4859fc7 | 17 | NetworkConfigSection *section; |
fc2f9534 | 18 | |
1c8e710c TG |
19 | Link *link; |
20 | ||
fc2f9534 | 21 | int family; |
09f5dfad SS |
22 | int quickack; |
23 | ||
fc2f9534 LP |
24 | unsigned char dst_prefixlen; |
25 | unsigned char src_prefixlen; | |
26 | unsigned char scope; | |
fc2f9534 | 27 | unsigned char protocol; /* RTPROT_* */ |
983226f3 | 28 | unsigned char type; /* RTN_* */ |
bb7ae737 | 29 | unsigned char tos; |
86655331 | 30 | uint32_t priority; /* note that ip(8) calls this 'metric' */ |
c953b24c | 31 | uint32_t table; |
d6fceaf1 | 32 | uint32_t mtu; |
323d9329 SS |
33 | uint32_t initcwnd; |
34 | uint32_t initrwnd; | |
3b015d40 TG |
35 | unsigned char pref; |
36 | unsigned flags; | |
fc2f9534 | 37 | |
2ce40956 TG |
38 | union in_addr_union gw; |
39 | union in_addr_union dst; | |
40 | union in_addr_union src; | |
41 | union in_addr_union prefsrc; | |
fc2f9534 | 42 | |
f833694d TG |
43 | usec_t lifetime; |
44 | sd_event_source *expire; | |
45 | ||
fc2f9534 LP |
46 | LIST_FIELDS(Route, routes); |
47 | }; | |
48 | ||
f4859fc7 | 49 | int route_new_static(Network *network, const char *filename, unsigned section_line, Route **ret); |
ed9e361a | 50 | int route_new(Route **ret); |
fc2f9534 LP |
51 | void route_free(Route *route); |
52 | int route_configure(Route *route, Link *link, sd_netlink_message_handler_t callback); | |
91b5f997 | 53 | int route_remove(Route *route, Link *link, sd_netlink_message_handler_t callback); |
fc2f9534 | 54 | |
14d20d2b SS |
55 | int route_get(Link *link, int family, const union in_addr_union *dst, unsigned char dst_prefixlen, unsigned char tos, uint32_t priority, uint32_t table, Route **ret); |
56 | int route_add(Link *link, int family, const union in_addr_union *dst, unsigned char dst_prefixlen, unsigned char tos, uint32_t priority, uint32_t table, Route **ret); | |
57 | int route_add_foreign(Link *link, int family, const union in_addr_union *dst, unsigned char dst_prefixlen, unsigned char tos, uint32_t priority, uint32_t table, Route **ret); | |
bbd15900 | 58 | void route_update(Route *route, const union in_addr_union *src, unsigned char src_prefixlen, const union in_addr_union *gw, const union in_addr_union *prefsrc, unsigned char scope, unsigned char protocol, unsigned char type); |
1c8e710c | 59 | |
f833694d TG |
60 | int route_expire_handler(sd_event_source *s, uint64_t usec, void *userdata); |
61 | ||
fc2f9534 | 62 | DEFINE_TRIVIAL_CLEANUP_FUNC(Route*, route_free); |
fc2f9534 | 63 | |
a2106925 LP |
64 | CONFIG_PARSER_PROTOTYPE(config_parse_gateway); |
65 | CONFIG_PARSER_PROTOTYPE(config_parse_preferred_src); | |
66 | CONFIG_PARSER_PROTOTYPE(config_parse_destination); | |
67 | CONFIG_PARSER_PROTOTYPE(config_parse_route_priority); | |
68 | CONFIG_PARSER_PROTOTYPE(config_parse_route_scope); | |
69 | CONFIG_PARSER_PROTOTYPE(config_parse_route_table); | |
70 | CONFIG_PARSER_PROTOTYPE(config_parse_gateway_onlink); | |
71 | CONFIG_PARSER_PROTOTYPE(config_parse_ipv6_route_preference); | |
72 | CONFIG_PARSER_PROTOTYPE(config_parse_route_protocol); | |
73 | CONFIG_PARSER_PROTOTYPE(config_parse_route_type); | |
74 | CONFIG_PARSER_PROTOTYPE(config_parse_tcp_window); | |
75 | CONFIG_PARSER_PROTOTYPE(config_parse_quickack); | |
cea79e66 | 76 | CONFIG_PARSER_PROTOTYPE(config_parse_route_mtu); |