]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/libsystemd/sd-network/network-util.h
Merge pull request #18007 from fw-strlen/ipv6_masq_and_dnat
[thirdparty/systemd.git] / src / libsystemd / sd-network / network-util.h
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 #pragma once
3
4 #include <inttypes.h>
5 #include <stdbool.h>
6
7 #include "sd-device.h"
8 #include "sd-network.h"
9
10 #include "macro.h"
11
12 bool network_is_online(void);
13
14 typedef enum LinkOperationalState {
15 LINK_OPERSTATE_MISSING,
16 LINK_OPERSTATE_OFF,
17 LINK_OPERSTATE_NO_CARRIER,
18 LINK_OPERSTATE_DORMANT,
19 LINK_OPERSTATE_DEGRADED_CARRIER,
20 LINK_OPERSTATE_CARRIER,
21 LINK_OPERSTATE_DEGRADED,
22 LINK_OPERSTATE_ENSLAVED,
23 LINK_OPERSTATE_ROUTABLE,
24 _LINK_OPERSTATE_MAX,
25 _LINK_OPERSTATE_INVALID = -EINVAL,
26 } LinkOperationalState;
27
28 typedef enum LinkCarrierState {
29 LINK_CARRIER_STATE_OFF = LINK_OPERSTATE_OFF,
30 LINK_CARRIER_STATE_NO_CARRIER = LINK_OPERSTATE_NO_CARRIER,
31 LINK_CARRIER_STATE_DORMANT = LINK_OPERSTATE_DORMANT,
32 LINK_CARRIER_STATE_DEGRADED_CARRIER = LINK_OPERSTATE_DEGRADED_CARRIER,
33 LINK_CARRIER_STATE_CARRIER = LINK_OPERSTATE_CARRIER,
34 LINK_CARRIER_STATE_ENSLAVED = LINK_OPERSTATE_ENSLAVED,
35 _LINK_CARRIER_STATE_MAX,
36 _LINK_CARRIER_STATE_INVALID = -EINVAL,
37 } LinkCarrierState;
38
39 typedef enum LinkAddressState {
40 LINK_ADDRESS_STATE_OFF,
41 LINK_ADDRESS_STATE_DEGRADED,
42 LINK_ADDRESS_STATE_ROUTABLE,
43 _LINK_ADDRESS_STATE_MAX,
44 _LINK_ADDRESS_STATE_INVALID = -EINVAL,
45 } LinkAddressState;
46
47 const char* link_operstate_to_string(LinkOperationalState s) _const_;
48 LinkOperationalState link_operstate_from_string(const char *s) _pure_;
49
50 const char* link_carrier_state_to_string(LinkCarrierState s) _const_;
51 LinkCarrierState link_carrier_state_from_string(const char *s) _pure_;
52
53 const char* link_address_state_to_string(LinkAddressState s) _const_;
54 LinkAddressState link_address_state_from_string(const char *s) _pure_;
55
56 typedef struct LinkOperationalStateRange {
57 LinkOperationalState min;
58 LinkOperationalState max;
59 } LinkOperationalStateRange;
60
61 #define LINK_OPERSTATE_RANGE_DEFAULT (LinkOperationalStateRange) { LINK_OPERSTATE_DEGRADED, \
62 LINK_OPERSTATE_ROUTABLE }
63
64 int parse_operational_state_range(const char *str, LinkOperationalStateRange *out);
65
66 char *link_get_type_string(sd_device *device, unsigned short iftype);
67 int net_get_unique_predictable_data(sd_device *device, bool use_sysname, uint64_t *result);
68 const char *net_get_name_persistent(sd_device *device);