]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
dhcp-protocol: introduce dhcp_option_code_to_string() 41710/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 16 Apr 2026 18:58:12 +0000 (03:58 +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
src/libsystemd-network/dhcp-protocol.h

index 976f9832d6f045c2c66e77af28e35a9b80cc456f..3a22e0f225aaac148c4d633bd2a1253b8aa778b6 100644 (file)
@@ -32,3 +32,159 @@ static const char * const dhcp_message_type_table[_DHCP_MESSAGE_TYPE_MAX] = {
 };
 
 DEFINE_STRING_TABLE_LOOKUP_TO_STRING(dhcp_message_type, DHCPMessageType);
+
+static const char * const dhcp_option_code_table[] = {
+        [SD_DHCP_OPTION_PAD]                            = "pad",
+        [SD_DHCP_OPTION_SUBNET_MASK]                    = "subnet mask",
+        [SD_DHCP_OPTION_TIME_OFFSET]                    = "time offset",
+        [SD_DHCP_OPTION_ROUTER]                         = "router",
+        [SD_DHCP_OPTION_TIME_SERVER]                    = "time server",
+        [SD_DHCP_OPTION_NAME_SERVER]                    = "name server",
+        [SD_DHCP_OPTION_DOMAIN_NAME_SERVER]             = "domain name server",
+        [SD_DHCP_OPTION_LOG_SERVER]                     = "log server",
+        [SD_DHCP_OPTION_QUOTES_SERVER]                  = "quotes server",
+        [SD_DHCP_OPTION_LPR_SERVER]                     = "LPR server",
+        [SD_DHCP_OPTION_IMPRESS_SERVER]                 = "impress server",
+        [SD_DHCP_OPTION_RLP_SERVER]                     = "RLP server",
+        [SD_DHCP_OPTION_HOST_NAME]                      = "hostname",
+        [SD_DHCP_OPTION_BOOT_FILE_SIZE]                 = "boot file size",
+        [SD_DHCP_OPTION_MERIT_DUMP_FILE]                = "merit dump file",
+        [SD_DHCP_OPTION_DOMAIN_NAME]                    = "domain name",
+        [SD_DHCP_OPTION_SWAP_SERVER]                    = "swap server",
+        [SD_DHCP_OPTION_ROOT_PATH]                      = "root path",
+        [SD_DHCP_OPTION_EXTENSION_FILE]                 = "extension file",
+        [SD_DHCP_OPTION_FORWARD]                        = "IP forwarding",
+        [SD_DHCP_OPTION_SOURCE_ROUTE]                   = "source routing",
+        [SD_DHCP_OPTION_POLICY_FILTER]                  = "policy filter",
+        [SD_DHCP_OPTION_MAX_DATAGRAM_ASSEMBLY]          = "max datagram assembly",
+        [SD_DHCP_OPTION_DEFAULT_IP_TTL]                 = "default IP TTL",
+        [SD_DHCP_OPTION_MTU_TIMEOUT]                    = "MTU timeout",
+        [SD_DHCP_OPTION_MTU_PLATEAU]                    = "MTU plateau",
+        [SD_DHCP_OPTION_MTU_INTERFACE]                  = "MTU size",
+        [SD_DHCP_OPTION_MTU_SUBNET]                     = "MTU subnet",
+        [SD_DHCP_OPTION_BROADCAST]                      = "broadcast address",
+        [SD_DHCP_OPTION_MASK_DISCOVERY]                 = "mask discovery",
+        [SD_DHCP_OPTION_MASK_SUPPLIER]                  = "mask supplier",
+        [SD_DHCP_OPTION_ROUTER_DISCOVERY]               = "router discovery",
+        [SD_DHCP_OPTION_ROUTER_REQUEST]                 = "router request",
+        [SD_DHCP_OPTION_STATIC_ROUTE]                   = "static route",
+        [SD_DHCP_OPTION_TRAILERS]                       = "trailers",
+        [SD_DHCP_OPTION_ARP_TIMEOUT]                    = "ARP timeout",
+        [SD_DHCP_OPTION_ETHERNET]                       = "Ethernet encapsulation",
+        [SD_DHCP_OPTION_DEFAULT_TCP_TTL]                = "default TCP TTL",
+        [SD_DHCP_OPTION_KEEPALIVE_TIME]                 = "keepalive time",
+        [SD_DHCP_OPTION_KEEPALIVE_DATA]                 = "keepalive data",
+        [SD_DHCP_OPTION_NIS_DOMAIN]                     = "NIS domain",
+        [SD_DHCP_OPTION_NIS_SERVER]                     = "NIS server",
+        [SD_DHCP_OPTION_NTP_SERVER]                     = "NTP server",
+        [SD_DHCP_OPTION_VENDOR_SPECIFIC]                = "vendor specific",
+        [SD_DHCP_OPTION_NETBIOS_NAME_SERVER]            = "NETBIOS name server",
+        [SD_DHCP_OPTION_NETBIOS_DIST_SERVER]            = "NETBIOS distribution server",
+        [SD_DHCP_OPTION_NETBIOS_NODE_TYPE]              = "NETBIOS node type",
+        [SD_DHCP_OPTION_NETBIOS_SCOPE]                  = "NETBIOS scope",
+        [SD_DHCP_OPTION_X_WINDOW_FONT]                  = "X Window font",
+        [SD_DHCP_OPTION_X_WINDOW_MANAGER]               = "X Window manager",
+        [SD_DHCP_OPTION_REQUESTED_IP_ADDRESS]           = "requested IP address",
+        [SD_DHCP_OPTION_IP_ADDRESS_LEASE_TIME]          = "lease time",
+        [SD_DHCP_OPTION_OVERLOAD]                       = "overload",
+        [SD_DHCP_OPTION_MESSAGE_TYPE]                   = "message type",
+        [SD_DHCP_OPTION_SERVER_IDENTIFIER]              = "server identifier",
+        [SD_DHCP_OPTION_PARAMETER_REQUEST_LIST]         = "parameter request list",
+        [SD_DHCP_OPTION_ERROR_MESSAGE]                  = "error message",
+        [SD_DHCP_OPTION_MAXIMUM_MESSAGE_SIZE]           = "max message size",
+        [SD_DHCP_OPTION_RENEWAL_TIME]                   = "renewal time",
+        [SD_DHCP_OPTION_REBINDING_TIME]                 = "rebinding time",
+        [SD_DHCP_OPTION_VENDOR_CLASS_IDENTIFIER]        = "vendor class identifier",
+        [SD_DHCP_OPTION_CLIENT_IDENTIFIER]              = "client identifier",
+        [SD_DHCP_OPTION_NETWARE_IP_DOMAIN]              = "NetWare IP domain",
+        [SD_DHCP_OPTION_NETWARE_IP_OPTION]              = "NetWare IP option",
+        [SD_DHCP_OPTION_NIS_DOMAIN_NAME]                = "NIS+ v3 domain",
+        [SD_DHCP_OPTION_NIS_SERVER_ADDR]                = "NIS+ v3 server",
+        [SD_DHCP_OPTION_BOOT_SERVER_NAME]               = "TFTP server name",
+        [SD_DHCP_OPTION_BOOT_FILENAME]                  = "boot file name",
+        [SD_DHCP_OPTION_HOME_AGENT_ADDRESS]             = "home agent address",
+        [SD_DHCP_OPTION_SMTP_SERVER]                    = "SMTP server",
+        [SD_DHCP_OPTION_POP3_SERVER]                    = "POP3 server",
+        [SD_DHCP_OPTION_NNTP_SERVER]                    = "NNTP server",
+        [SD_DHCP_OPTION_WWW_SERVER]                     = "WWW server",
+        [SD_DHCP_OPTION_FINGER_SERVER]                  = "finger server",
+        [SD_DHCP_OPTION_IRC_SERVER]                     = "IRC server",
+        [SD_DHCP_OPTION_STREETTALK_SERVER]              = "StreetTalk server",
+        [SD_DHCP_OPTION_STDA_SERVER]                    = "STDA server",
+        [SD_DHCP_OPTION_USER_CLASS]                     = "user class",
+        [SD_DHCP_OPTION_DIRECTORY_AGENT]                = "directory agent",
+        [SD_DHCP_OPTION_SERVICE_SCOPE]                  = "service scope",
+        [SD_DHCP_OPTION_RAPID_COMMIT]                   = "rapid commit",
+        [SD_DHCP_OPTION_FQDN]                           = "FQDN",
+        [SD_DHCP_OPTION_RELAY_AGENT_INFORMATION]        = "relay agent information",
+        [SD_DHCP_OPTION_ISNS]                           = "iSNS",
+        [SD_DHCP_OPTION_NDS_SERVER]                     = "NDS server",
+        [SD_DHCP_OPTION_NDS_TREE_NAME]                  = "NDS tree name",
+        [SD_DHCP_OPTION_NDS_CONTEXT]                    = "NDS context",
+        [SD_DHCP_OPTION_BCMCS_CONTROLLER_DOMAIN_NAME]   = "BCMCS controller domain name",
+        [SD_DHCP_OPTION_BCMCS_CONTROLLER_ADDRESS]       = "BCMCS controller address",
+        [SD_DHCP_OPTION_AUTHENTICATION]                 = "authentication",
+        [SD_DHCP_OPTION_CLIENT_LAST_TRANSACTION_TIME]   = "client last transaction time",
+        [SD_DHCP_OPTION_ASSOCIATED_IP]                  = "associated IP",
+        [SD_DHCP_OPTION_CLIENT_SYSTEM]                  = "client system",
+        [SD_DHCP_OPTION_CLIENT_NDI]                     = "client NDI",
+        [SD_DHCP_OPTION_LDAP]                           = "LDAP",
+        [SD_DHCP_OPTION_UUID]                           = "UUID",
+        [SD_DHCP_OPTION_USER_AUTHENTICATION]            = "user authentication",
+        [SD_DHCP_OPTION_GEOCONF_CIVIC]                  = "geoconf civic",
+        [SD_DHCP_OPTION_POSIX_TIMEZONE]                 = "posix timezone",
+        [SD_DHCP_OPTION_TZDB_TIMEZONE]                  = "tzdb timezone",
+        [SD_DHCP_OPTION_IPV6_ONLY_PREFERRED]            = "IPv6-only preferred",
+        [SD_DHCP_OPTION_DHCP4O6_SOURCE_ADDRESS]         = "DHCPv4 over DHCPv6 source address",
+        [SD_DHCP_OPTION_NETINFO_ADDRESS]                = "Netinfo address",
+        [SD_DHCP_OPTION_NETINFO_TAG]                    = "Netinfo tag",
+        [SD_DHCP_OPTION_DHCP_CAPTIVE_PORTAL]            = "captive portal",
+        [SD_DHCP_OPTION_AUTO_CONFIG]                    = "auto config",
+        [SD_DHCP_OPTION_NAME_SERVICE_SEARCH]            = "name service search",
+        [SD_DHCP_OPTION_SUBNET_SELECTION]               = "subnet selection",
+        [SD_DHCP_OPTION_DOMAIN_SEARCH]                  = "domain search",
+        [SD_DHCP_OPTION_SIP_SERVER]                     = "SIP server",
+        [SD_DHCP_OPTION_CLASSLESS_STATIC_ROUTE]         = "classless static route",
+        [SD_DHCP_OPTION_CABLELABS_CLIENT_CONFIGURATION] = "CableLabs client configuration",
+        [SD_DHCP_OPTION_GEOCONF]                        = "geoconf",
+        [SD_DHCP_OPTION_VENDOR_CLASS]                   = "vendor class",
+        [SD_DHCP_OPTION_VENDOR_SPECIFIC_INFORMATION]    = "vendor specific information",
+        [SD_DHCP_OPTION_PANA_AGENT]                     = "PANA agent",
+        [SD_DHCP_OPTION_LOST_SERVER_FQDN]               = "LoST server",
+        [SD_DHCP_OPTION_CAPWAP_AC_ADDRESS]              = "CAPWAP access controller address",
+        [SD_DHCP_OPTION_MOS_ADDRESS]                    = "MoS address",
+        [SD_DHCP_OPTION_MOS_FQDN]                       = "MoS FQDN",
+        [SD_DHCP_OPTION_SIP_SERVICE_DOMAIN]             = "SIP service domain",
+        [SD_DHCP_OPTION_ANDSF_ADDRESS]                  = "ANDSF address",
+        [SD_DHCP_OPTION_SZTP_REDIRECT]                  = "SZTP server",
+        [SD_DHCP_OPTION_GEOLOC]                         = "geospatial location",
+        [SD_DHCP_OPTION_FORCERENEW_NONCE_CAPABLE]       = "forcerenew nonce capable",
+        [SD_DHCP_OPTION_RDNSS_SELECTION]                = "RDNSS selection",
+        [SD_DHCP_OPTION_DOTS_RI]                        = "DOTS agent name",
+        [SD_DHCP_OPTION_DOTS_ADDRESS]                   = "DOTS agent address",
+        [SD_DHCP_OPTION_TFTP_SERVER_ADDRESS]            = "TFTP server address",
+        [SD_DHCP_OPTION_STATUS_CODE]                    = "status code",
+        [SD_DHCP_OPTION_BASE_TIME]                      = "base time",
+        [SD_DHCP_OPTION_START_TIME_OF_STATE]            = "start time of state",
+        [SD_DHCP_OPTION_QUERY_START_TIME]               = "query start time",
+        [SD_DHCP_OPTION_QUERY_END_TIME]                 = "query end time",
+        [SD_DHCP_OPTION_DHCP_STATE]                     = "DHCP state",
+        [SD_DHCP_OPTION_DATA_SOURCE]                    = "data source",
+        [SD_DHCP_OPTION_PCP_SERVER]                     = "PCP server",
+        [SD_DHCP_OPTION_PORT_PARAMS]                    = "port parameter",
+        [SD_DHCP_OPTION_MUD_URL]                        = "MUD URL",
+        [SD_DHCP_OPTION_V4_DNR]                         = "encrypted DNS server",
+        [SD_DHCP_OPTION_PXELINUX_MAGIC]                 = "PXELinux magic",
+        [SD_DHCP_OPTION_CONFIGURATION_FILE]             = "configuration file",
+        [SD_DHCP_OPTION_PATH_PREFIX]                    = "path prefix",
+        [SD_DHCP_OPTION_REBOOT_TIME]                    = "reboot time",
+        [SD_DHCP_OPTION_6RD]                            = "6rd",
+        [SD_DHCP_OPTION_ACCESS_DOMAIN]                  = "access network domain",
+        [SD_DHCP_OPTION_SUBNET_ALLOCATION]              = "subnet allocation",
+        [SD_DHCP_OPTION_VIRTUAL_SUBNET_SELECTION]       = "virtual subnet selection",
+        [SD_DHCP_OPTION_PRIVATE_CLASSLESS_STATIC_ROUTE] = "(private) classless static route",
+        [SD_DHCP_OPTION_PRIVATE_PROXY_AUTODISCOVERY]    = "(private) proxy autodiscovery",
+        [SD_DHCP_OPTION_END]                            = "end",
+};
+
+DEFINE_STRING_TABLE_LOOKUP_TO_STRING(dhcp_option_code, int);
index 1b5842f0af3296b8059f7189fc33fdffc6fc9b36..c2df5a574a89e5bf646f85a9f77d1e3766ebad44 100644 (file)
@@ -123,3 +123,5 @@ enum {
         DHCP_FQDN_FLAG_E = (1 << 2),
         DHCP_FQDN_FLAG_N = (1 << 3),
 };
+
+DECLARE_STRING_TABLE_LOOKUP_TO_STRING(dhcp_option_code, int);