]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[tftp] Add error table entry for TFTP "file not found" error code
authorMichael Brown <mcb30@ipxe.org>
Fri, 29 Mar 2024 12:38:09 +0000 (12:38 +0000)
committerMichael Brown <mcb30@ipxe.org>
Fri, 29 Mar 2024 14:46:13 +0000 (14:46 +0000)
Add an abbreviated "Not found" error message for a TFTP "file not
found" error code, so that any automatic attempt to download a
non-existent autoexec.ipxe script produces only a minimal error
message.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/net/udp/tftp.c

index 3073e682fcd5f28bea2d8d458909d12290ab1e4c..2ee01862ab23d488d5c1ae3d407abe8d9b4c0193 100644 (file)
@@ -44,6 +44,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
 #include <ipxe/dhcp.h>
 #include <ipxe/uri.h>
 #include <ipxe/profile.h>
+#include <ipxe/errortab.h>
 #include <ipxe/tftp.h>
 
 /** @file
@@ -76,6 +77,9 @@ FEATURE ( FEATURE_PROTOCOL, "TFTP", DHCP_EB_FEATURE_TFTP, 1 );
 #define EINVAL_MC_INVALID_PORT __einfo_error ( EINFO_EINVAL_MC_INVALID_PORT )
 #define EINFO_EINVAL_MC_INVALID_PORT __einfo_uniqify \
        ( EINFO_EINVAL, 0x07, "Invalid multicast port" )
+#define ENOENT_NOT_FOUND __einfo_error ( EINFO_ENOENT_NOT_FOUND )
+#define EINFO_ENOENT_NOT_FOUND __einfo_uniqify \
+       ( EINFO_ENOENT, 0x01, "Not found" )
 
 /**
  * A TFTP request
@@ -167,6 +171,11 @@ static struct profiler tftp_client_profiler __profiler =
 static struct profiler tftp_server_profiler __profiler =
        { .name = "tftp.server" };
 
+/** Human-readable error messages */
+struct errortab tftp_errors[] __errortab = {
+       __einfo_errortab ( EINFO_ENOENT_NOT_FOUND ),
+};
+
 /**
  * Free TFTP request
  *
@@ -872,7 +881,7 @@ static int tftp_rx_data ( struct tftp_request *tftp,
  */
 static int tftp_errcode_to_rc ( unsigned int errcode ) {
        switch ( errcode ) {
-       case TFTP_ERR_FILE_NOT_FOUND:   return -ENOENT;
+       case TFTP_ERR_FILE_NOT_FOUND:   return -ENOENT_NOT_FOUND;
        case TFTP_ERR_ACCESS_DENIED:    return -EACCES;
        case TFTP_ERR_ILLEGAL_OP:       return -ENOTTY;
        default:                        return -ENOTSUP;