summaryrefslogtreecommitdiff
path: root/src/network/networkd-address.h
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2019-03-01 13:27:47 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2019-03-13 11:59:18 +0900
commitfcbf4cb7270faa2624a0cf149f9518280e8a6714 (patch)
treeb64aa98c4b00aec29b3c3b8f216a2cb712e78178 /src/network/networkd-address.h
parent9560e5b3235e30eea2873e507d27ed00331d838c (diff)
downloadsystemd-fcbf4cb7270faa2624a0cf149f9518280e8a6714.tar.gz
network: drop sections contain invalid settings in network_verify()
If e.g., an [Address] section has an invalid setting, then previously assigned settings in the section is freed, and only later settings are stored. That may cause partially broken section stored in Network object. This makes if an invalid setting is found, then set 'invalid' flag instead of freeing it. And invalid sections are dropped later by network_verify().
Diffstat (limited to 'src/network/networkd-address.h')
-rw-r--r--src/network/networkd-address.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/network/networkd-address.h b/src/network/networkd-address.h
index 57d82f82c3..455985d225 100644
--- a/src/network/networkd-address.h
+++ b/src/network/networkd-address.h
@@ -11,6 +11,7 @@ typedef struct Address Address;
#include "networkd-link.h"
#include "networkd-network.h"
+#include "networkd-util.h"
#define CACHE_INFO_INFINITY_LIFE_TIME 0xFFFFFFFFU
@@ -57,8 +58,9 @@ int address_configure(Address *address, Link *link, link_netlink_message_handler
int address_remove(Address *address, Link *link, link_netlink_message_handler_t callback);
bool address_equal(Address *a1, Address *a2);
bool address_is_ready(const Address *a);
+int address_section_verify(Address *a);
-DEFINE_TRIVIAL_CLEANUP_FUNC(Address*, address_free);
+DEFINE_NETWORK_SECTION_FUNCTIONS(Address, address_free);
CONFIG_PARSER_PROTOTYPE(config_parse_address);
CONFIG_PARSER_PROTOTYPE(config_parse_broadcast);