| /* SPDX-License-Identifier: LGPL-2.1+ |
| * Copyright © 2019 VMware, Inc. |
| */ |
| |
| #pragma once |
| |
| #include "conf-parser.h" |
| #include "macro.h" |
| |
| typedef struct NextHop NextHop; |
| typedef struct NetworkConfigSection NetworkConfigSection; |
| |
| #include "networkd-network.h" |
| #include "networkd-util.h" |
| |
| struct NextHop { |
| Network *network; |
| NetworkConfigSection *section; |
| |
| Link *link; |
| |
| unsigned char protocol; |
| |
| int family; |
| uint32_t oif; |
| uint32_t id; |
| |
| union in_addr_union gw; |
| |
| LIST_FIELDS(NextHop, nexthops); |
| }; |
| |
| extern const struct hash_ops nexthop_hash_ops; |
| |
| int nexthop_new(NextHop **ret); |
| void nexthop_free(NextHop *nexthop); |
| int nexthop_configure(NextHop *nexthop, Link *link, link_netlink_message_handler_t callback); |
| int nexthop_remove(NextHop *nexthop, Link *link, link_netlink_message_handler_t callback); |
| |
| int nexthop_get(Link *link, NextHop *in, NextHop **ret); |
| int nexthop_add(Link *link, NextHop *in, NextHop **ret); |
| int nexthop_add_foreign(Link *link, NextHop *in, NextHop **ret); |
| bool nexthop_equal(NextHop *r1, NextHop *r2); |
| |
| int nexthop_section_verify(NextHop *nexthop); |
| |
| DEFINE_NETWORK_SECTION_FUNCTIONS(NextHop, nexthop_free); |
| |
| CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_id); |
| CONFIG_PARSER_PROTOTYPE(config_parse_nexthop_gateway); |