]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/network/networkd-address.h
Merge pull request #11827 from keszybz/pkgconfig-variables
[thirdparty/systemd.git] / src / network / networkd-address.h
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
fc2f9534
LP
2#pragma once
3
fc2f9534
LP
4#include <inttypes.h>
5#include <stdbool.h>
6
a2106925 7#include "conf-parser.h"
fc2f9534
LP
8#include "in-addr-util.h"
9
10typedef struct Address Address;
11
fc2f9534 12#include "networkd-link.h"
71d35b6b 13#include "networkd-network.h"
fc2f9534
LP
14
15#define CACHE_INFO_INFINITY_LIFE_TIME 0xFFFFFFFFU
16
634f0f98
ZJS
17typedef struct Network Network;
18typedef struct Link Link;
f4859fc7 19typedef struct NetworkConfigSection NetworkConfigSection;
634f0f98 20
fc2f9534
LP
21struct Address {
22 Network *network;
f4859fc7 23 NetworkConfigSection *section;
fc2f9534 24
cf1d700d
TG
25 Link *link;
26
fc2f9534
LP
27 int family;
28 unsigned char prefixlen;
29 unsigned char scope;
30 uint32_t flags;
31 char *label;
32
33 struct in_addr broadcast;
34 struct ifa_cacheinfo cinfo;
35
36 union in_addr_union in_addr;
37 union in_addr_union in_addr_peer;
38
adda1ed9 39 bool ip_masquerade_done:1;
e63be084
SS
40 bool duplicate_address_detection;
41 bool manage_temporary_address;
42 bool home_address;
43 bool prefix_route;
44 bool autojoin;
fc2f9534
LP
45
46 LIST_FIELDS(Address, addresses);
47};
48
f4859fc7 49int address_new_static(Network *network, const char *filename, unsigned section, Address **ret);
f0213e37 50int address_new(Address **ret);
fc2f9534 51void address_free(Address *address);
adda1ed9 52int address_add_foreign(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret);
c4a03a56 53int address_add(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret);
cf1d700d 54int address_get(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret);
889b550f 55int address_update(Address *address, unsigned char flags, unsigned char scope, const struct ifa_cacheinfo *cinfo);
91b5f997 56int address_drop(Address *address);
302a796f
YW
57int address_configure(Address *address, Link *link, link_netlink_message_handler_t callback, bool update);
58int address_remove(Address *address, Link *link, link_netlink_message_handler_t callback);
fc2f9534 59bool address_equal(Address *a1, Address *a2);
ce6c77eb 60bool address_is_ready(const Address *a);
fc2f9534
LP
61
62DEFINE_TRIVIAL_CLEANUP_FUNC(Address*, address_free);
fc2f9534 63
a2106925
LP
64CONFIG_PARSER_PROTOTYPE(config_parse_address);
65CONFIG_PARSER_PROTOTYPE(config_parse_broadcast);
66CONFIG_PARSER_PROTOTYPE(config_parse_label);
67CONFIG_PARSER_PROTOTYPE(config_parse_lifetime);
68CONFIG_PARSER_PROTOTYPE(config_parse_address_flags);
69CONFIG_PARSER_PROTOTYPE(config_parse_address_scope);