]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
dhcp-protocol: introduce {bootp,dhcp}_message_type_to_string()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 21 Mar 2026 17:07:30 +0000 (02:07 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 18 Apr 2026 23:31:07 +0000 (08:31 +0900)
src/libsystemd-network/dhcp-protocol.c [new file with mode: 0644]
src/libsystemd-network/dhcp-protocol.h
src/libsystemd-network/meson.build

diff --git a/src/libsystemd-network/dhcp-protocol.c b/src/libsystemd-network/dhcp-protocol.c
new file mode 100644 (file)
index 0000000..976f983
--- /dev/null
@@ -0,0 +1,34 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "dhcp-protocol.h"
+#include "string-table.h"
+
+static const char * const bootp_message_type_table[_BOOTP_MESSAGE_TYPE_MAX] = {
+        [BOOTREQUEST]           = "BOOTREQUEST",
+        [BOOTREPLY]             = "BOOTREPLY",
+};
+
+DEFINE_STRING_TABLE_LOOKUP_TO_STRING(bootp_message_type, BOOTPMessageType);
+
+static const char * const dhcp_message_type_table[_DHCP_MESSAGE_TYPE_MAX] = {
+        [DHCP_DISCOVER]         = "DISCOVER",
+        [DHCP_OFFER]            = "OFFER",
+        [DHCP_REQUEST]          = "REQUEST",
+        [DHCP_DECLINE]          = "DECLINE",
+        [DHCP_ACK]              = "ACK",
+        [DHCP_NAK]              = "NAK",
+        [DHCP_RELEASE]          = "RELEASE",
+        [DHCP_INFORM]           = "INFORM",
+        [DHCP_FORCERENEW]       = "FORCERENEW",
+        [DHCP_LEASEQUERY]       = "LEASEQUERY",
+        [DHCP_LEASEUNASSIGNED]  = "LEASEUNASSIGNED",
+        [DHCP_LEASEUNKNOWN]     = "LEASEUNKNOWN",
+        [DHCP_LEASEACTIVE]      = "LEASEACTIVE",
+        [DHCP_BULKLEASEQUERY]   = "BULKLEASEQUERY",
+        [DHCP_LEASEQUERYDONE]   = "LEASEQUERYDONE",
+        [DHCP_ACTIVELEASEQUERY] = "ACTIVELEASEQUERY",
+        [DHCP_LEASEQUERYSTATUS] = "LEASEQUERYSTATUS",
+        [DHCP_TLS]              = "TLS",
+};
+
+DEFINE_STRING_TABLE_LOOKUP_TO_STRING(dhcp_message_type, DHCPMessageType);
index 10f9153aeb5ae4ec69b4739cc85f3d1ceebea1bd..1b5842f0af3296b8059f7189fc33fdffc6fc9b36 100644 (file)
@@ -8,7 +8,7 @@
 #include <netinet/ip.h>
 #include <netinet/udp.h>
 
-#include "sd-dhcp-protocol.h"
+#include "sd-dhcp-protocol.h"  /* IWYU pragma: export */
 
 #include "sd-forward.h"
 #include "sparse-endian.h"
@@ -74,12 +74,16 @@ enum {
         DHCP_PORT_CLIENT                        = 68,
 };
 
-enum {
+typedef enum {
         BOOTREQUEST                             = 1,
         BOOTREPLY                               = 2,
-};
+        _BOOTP_MESSAGE_TYPE_MAX,
+        _BOOTP_MESSAGE_TYPE_INVALID             = -EINVAL,
+} BOOTPMessageType;
 
-enum {
+DECLARE_STRING_TABLE_LOOKUP_TO_STRING(bootp_message_type, BOOTPMessageType);
+
+typedef enum {
         DHCP_DISCOVER                           = 1,  /* [RFC2132] */
         DHCP_OFFER                              = 2,  /* [RFC2132] */
         DHCP_REQUEST                            = 3,  /* [RFC2132] */
@@ -98,7 +102,11 @@ enum {
         DHCP_ACTIVELEASEQUERY                   = 16, /* [RFC7724] */
         DHCP_LEASEQUERYSTATUS                   = 17, /* [RFC7724] */
         DHCP_TLS                                = 18, /* [RFC7724] */
-};
+        _DHCP_MESSAGE_TYPE_MAX,
+        _DHCP_MESSAGE_TYPE_INVALID              = -EINVAL,
+} DHCPMessageType;
+
+DECLARE_STRING_TABLE_LOOKUP_TO_STRING(dhcp_message_type, DHCPMessageType);
 
 typedef enum {
         DHCP_OVERLOAD_NONE                      = 0,
index e0012abe0bcf3d9d8121e3b1c41cd812474f7a6e..2eeabc075e04f49f4b116ae968d9bdbd8352196c 100644 (file)
@@ -5,6 +5,7 @@ libsystemd_network_sources = files(
         'dhcp-network.c',
         'dhcp-option.c',
         'dhcp-packet.c',
+        'dhcp-protocol.c',
         'dhcp6-network.c',
         'dhcp6-option.c',
         'dhcp6-protocol.c',