summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-07-07 22:37:31 +0200
committerThomas Haller <thaller@redhat.com>2022-07-19 12:36:56 +0200
commit6ff6c1dfc142e1893f8db73d79a62e436eb90761 (patch)
tree3909e1256dbd0ddbb53d2838fc615f40504699e7
parentbaecadbe9862119b6dd2ad39839b44b97d5a805f (diff)
downloadNetworkManager-6ff6c1dfc142e1893f8db73d79a62e436eb90761.tar.gz
platform: tighter pack structs and enums
Reorder fields in DelayedActionWaitForNlResponseData, so that the struct size is optimal due to the alignment constraints. Also, when we remember enum values and embed them somewhere, it's nice if they only take the space actually needed. _nm_packed solves that.
-rw-r--r--src/libnm-platform/nm-linux-platform.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/libnm-platform/nm-linux-platform.c b/src/libnm-platform/nm-linux-platform.c
index d12d92d4a9..49873dae6c 100644
--- a/src/libnm-platform/nm-linux-platform.c
+++ b/src/libnm-platform/nm-linux-platform.c
@@ -323,7 +323,7 @@ typedef struct {
gint8 addr_family_for_dump;
} RefreshAllInfo;
-typedef enum {
+typedef enum _nm_packed {
DELAYED_ACTION_TYPE_NONE = 0,
#define F(val, name) ((sizeof(char[(((val)) == (name)) ? 1 : -1]) * 0) + (val))
@@ -378,7 +378,7 @@ typedef enum {
}); \
(iflags) <<= 1)
-typedef enum {
+typedef enum _nm_packed {
/* Negative values are errors from kernel. Add dummy member to
* make enum signed. */
_WAIT_FOR_NL_RESPONSE_RESULT_SYSTEM_ERROR = G_MININT,
@@ -393,24 +393,24 @@ typedef enum {
WAIT_FOR_NL_RESPONSE_RESULT_FAILED_SETNS,
} WaitForNlResponseResult;
-typedef enum {
+typedef enum _nm_packed {
DELAYED_ACTION_RESPONSE_TYPE_VOID = 0,
DELAYED_ACTION_RESPONSE_TYPE_REFRESH_ALL_IN_PROGRESS = 1,
DELAYED_ACTION_RESPONSE_TYPE_ROUTE_GET = 2,
} DelayedActionWaitForNlResponseType;
typedef struct {
- guint32 seq_number;
- WaitForNlResponseResult seq_result;
- DelayedActionWaitForNlResponseType response_type;
- gint64 timeout_abs_nsec;
- WaitForNlResponseResult *out_seq_result;
- char **out_errmsg;
+ WaitForNlResponseResult *out_seq_result;
+ char **out_errmsg;
union {
int *out_refresh_all_in_progress;
NMPObject **out_route_get;
gpointer out_data;
} response;
+ gint64 timeout_abs_nsec;
+ guint32 seq_number;
+ WaitForNlResponseResult seq_result;
+ DelayedActionWaitForNlResponseType response_type;
} DelayedActionWaitForNlResponseData;
/*****************************************************************************/