NetworkManager/src/core/devices/nm-device-utils.h
Thomas Haller 0bc5a2c76f
core: add "nm-device-utils.[ch]" with simple helper functions
"nm-device.c" is huge, and it does complicated things like handling the
state of the device and IP configuration.

It also contains simpler, individual functions, like converting enums to
strings. Let's move those trivial functions to a new module, so that the
remaining part is smaller.

"nm-device-utils.[ch]" should only contain simpler functions that have
no complex behavior or state.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/840
2021-05-06 12:19:44 +02:00

88 lines
3.4 KiB
C

/* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef __DEVICES_NM_DEVICE_UTILS_H__
#define __DEVICES_NM_DEVICE_UTILS_H__
/*****************************************************************************/
const char *nm_device_state_to_str(NMDeviceState state);
const char *nm_device_state_reason_to_str(NMDeviceStateReason reason);
#define nm_device_state_reason_to_str_a(reason) \
NM_UTILS_LOOKUP_STR_A(nm_device_state_reason_to_str, reason)
static inline NMDeviceStateReason
nm_device_state_reason_check(NMDeviceStateReason reason)
{
/* the device-state-reason serves mostly informational purpose during a state
* change. In some cases however, decisions are made based on the reason.
* I tend to think that interpreting the state reason to derive some behaviors
* is confusing, because the cause and effect are so far apart.
*
* This function is here to mark source that inspects the reason to make
* a decision -- contrary to places that set the reason. Thus, by grepping
* for nm_device_state_reason_check() you can find the "effect" to a certain
* reason.
*/
return reason;
}
/*****************************************************************************/
#define NM_PENDING_ACTION_AUTOACTIVATE "autoactivate"
#define NM_PENDING_ACTION_IN_STATE_CHANGE "in-state-change"
#define NM_PENDING_ACTION_RECHECK_AVAILABLE "recheck-available"
#define NM_PENDING_ACTION_CARRIER_WAIT "carrier-wait"
#define NM_PENDING_ACTION_WAITING_FOR_SUPPLICANT "waiting-for-supplicant"
#define NM_PENDING_ACTION_WIFI_SCAN "wifi-scan"
#define NM_PENDING_ACTION_WAITING_FOR_COMPANION "waiting-for-companion"
#define NM_PENDING_ACTION_LINK_INIT "link-init"
#define NM_PENDING_ACTIONPREFIX_QUEUED_STATE_CHANGE "queued-state-change-"
#define NM_PENDING_ACTIONPREFIX_ACTIVATION "activation-"
const char *nm_device_state_queued_state_to_str(NMDeviceState state);
/*****************************************************************************/
typedef enum {
NM_DEVICE_MTU_SOURCE_NONE,
NM_DEVICE_MTU_SOURCE_PARENT,
NM_DEVICE_MTU_SOURCE_IP_CONFIG,
NM_DEVICE_MTU_SOURCE_CONNECTION,
} NMDeviceMtuSource;
const char *nm_device_mtu_source_to_str(NMDeviceMtuSource mtu_source);
/*****************************************************************************/
typedef enum _nm_packed {
NM_DEVICE_SYS_IFACE_STATE_EXTERNAL,
NM_DEVICE_SYS_IFACE_STATE_ASSUME,
NM_DEVICE_SYS_IFACE_STATE_MANAGED,
/* the REMOVED state applies when the device is manually set to unmanaged
* or the link was externally removed. In both cases, we move the device
* to UNMANAGED state, without touching the link -- be it, because the link
* is already gone or because we want to release it (give it up).
*/
NM_DEVICE_SYS_IFACE_STATE_REMOVED,
} NMDeviceSysIfaceState;
const char *nm_device_sys_iface_state_to_str(NMDeviceSysIfaceState sys_iface_state);
/*****************************************************************************/
typedef enum {
NM_DEVICE_IP_STATE_NONE,
NM_DEVICE_IP_STATE_WAIT,
NM_DEVICE_IP_STATE_CONF,
NM_DEVICE_IP_STATE_DONE,
NM_DEVICE_IP_STATE_FAIL,
} NMDeviceIPState;
const char *nm_device_ip_state_to_str(NMDeviceIPState ip_state);
/*****************************************************************************/
#endif /* __DEVICES_NM_DEVICE_UTILS_H__ */