/*****************************************************************************\
 *  slurm_errno.c - error codes and functions for slurm
 ******************************************************************************
 *  Copyright (C) 2002-2007 The Regents of the University of California.
 *  Copyright (C) 2008-2010 Lawrence Livermore National Security.
 *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
 *  Written by Jim Garlick <garlick@llnl.gov>, et. al.
 *  CODE-OCEC-09-009. All rights reserved.
 *
 *  This file is part of Slurm, a resource management program.
 *  For details, see <https://slurm.schedmd.com/>.
 *  Please also read the included file: DISCLAIMER.
 *
 *  Slurm is free software; you can redistribute it and/or modify it under
 *  the terms of the GNU General Public License as published by the Free
 *  Software Foundation; either version 2 of the License, or (at your option)
 *  any later version.
 *
 *  In addition, as a special exception, the copyright holders give permission
 *  to link the code of portions of this program with the OpenSSL library under
 *  certain conditions as described in each individual source file, and
 *  distribute linked combinations including the two. You must obey the GNU
 *  General Public License in all respects for all of the code used other than
 *  OpenSSL. If you modify file(s) with this exception, you may extend this
 *  exception to your version of the file(s), but you are not obligated to do
 *  so. If you do not wish to do so, delete this exception statement from your
 *  version.  If you delete this exception statement from all source files in
 *  the program, then also delete it here.
 *
 *  Slurm is distributed in the hope that it will be useful, but WITHOUT ANY
 *  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 *  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 *  details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with Slurm; if not, write to the Free Software Foundation, Inc.,
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA.
\*****************************************************************************/

/*  This implementation relies on "overloading" the libc errno by
 *  partitioning its domain into system (<1000) and Slurm (>=1000) values.
 *  API users should call slurm_strerror() to convert all errno values to
 *  their description strings.
 */

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "slurm/slurm_errno.h"

/*
 * Each table entry needs the macro directly (to be translated into the raw
 * value) alongside the text string representation. Rather than duplicate them
 * - and risk them getting out of sync on a bad copy + paste - use this macro
 * to construct each row.
 */
#define ERRTAB_ENTRY(_e) _e, #_e

/* Add new error values to slurm/slurm_errno.h, and their descriptions to this table */
slurm_errtab_t slurm_errtab[] = {
	{ ERRTAB_ENTRY(SLURM_SUCCESS), "No error"},
	{ ERRTAB_ENTRY(SLURM_ERROR), "Unspecified error"},
	{ ERRTAB_ENTRY(EINPROGRESS), "Operation now in progress"},

	/* General Message error codes */
	{ ERRTAB_ENTRY(SLURM_UNEXPECTED_MSG_ERROR),
	  "Unexpected message received" 			},
	{ ERRTAB_ENTRY(SLURM_COMMUNICATIONS_CONNECTION_ERROR),
	  "Communication connection failure"   			},
	{ ERRTAB_ENTRY(SLURM_COMMUNICATIONS_SEND_ERROR),
	  "Message send failure"				},
	{ ERRTAB_ENTRY(SLURM_COMMUNICATIONS_RECEIVE_ERROR),
	  "Message receive failure"				},
	{ ERRTAB_ENTRY(SLURM_COMMUNICATIONS_SHUTDOWN_ERROR),
	  "Communication shutdown failure"			},
	{ ERRTAB_ENTRY(SLURM_PROTOCOL_VERSION_ERROR),
	  "Incompatible versions of client and server code"	},
        { ERRTAB_ENTRY(SLURM_PROTOCOL_IO_STREAM_VERSION_ERROR),
          "I/O stream version number error"                     },
        { ERRTAB_ENTRY(SLURM_PROTOCOL_AUTHENTICATION_ERROR),
          "Protocol authentication error"                       },
        { ERRTAB_ENTRY(SLURM_PROTOCOL_INSANE_MSG_LENGTH),
          "Insane message length"                               },
	{ ERRTAB_ENTRY(SLURM_MPI_PLUGIN_NAME_INVALID),
	  "Invalid MPI plugin name"                             },
	{ ERRTAB_ENTRY(SLURM_MPI_PLUGIN_PRELAUNCH_SETUP_FAILED),
	  "MPI plugin's pre-launch setup failed"                },
	{ ERRTAB_ENTRY(SLURM_PLUGIN_NAME_INVALID),
	  "Plugin initialization failed"			},
	{ ERRTAB_ENTRY(SLURM_UNKNOWN_FORWARD_ADDR),
	  "Can't find an address, check slurm.conf"		},
	{ ERRTAB_ENTRY(SLURM_COMMUNICATIONS_MISSING_SOCKET_ERROR),
	  "Unexpected missing socket error"			},
	{ ERRTAB_ENTRY(SLURM_COMMUNICATIONS_INVALID_INCOMING_FD),
	  "Unable to process incoming file descriptor" },
	{ ERRTAB_ENTRY(SLURM_COMMUNICATIONS_INVALID_OUTGOING_FD),
	  "Unable to process outgoing file descriptor" },
	{ ERRTAB_ENTRY(SLURM_COMMUNICATIONS_INVALID_FD),
	  "Unable to process incoming and outgoing file descriptors" },

	/* communication failures to/from slurmctld */
	{ ERRTAB_ENTRY(SLURMCTLD_COMMUNICATIONS_CONNECTION_ERROR),
	  "Unable to contact slurm controller (connect failure)" },
	{ ERRTAB_ENTRY(SLURMCTLD_COMMUNICATIONS_SEND_ERROR),
	  "Unable to contact slurm controller (send failure)"    },
	{ ERRTAB_ENTRY(SLURMCTLD_COMMUNICATIONS_RECEIVE_ERROR),
	  "Unable to contact slurm controller (receive failure)" },
	{ ERRTAB_ENTRY(SLURMCTLD_COMMUNICATIONS_SHUTDOWN_ERROR),
	  "Unable to contact slurm controller (shutdown failure)"},
	{ ERRTAB_ENTRY(SLURMCTLD_COMMUNICATIONS_BACKOFF),
	  "Rate limit exceeded, please retry momentarily"},
	{ ERRTAB_ENTRY(SLURMCTLD_COMMUNICATIONS_HARD_DROP),
	  "Rate limit exceeded, please retry later"},

	/* _info.c/communication layer RESPONSE_SLURM_RC message codes */

	/* Not really an error */
	{ ERRTAB_ENTRY(SLURM_NO_CHANGE_IN_DATA),
	  "Data has not changed since time specified"		},

	/* slurmctld error codes */

	{ ERRTAB_ENTRY(ESLURM_INVALID_PARTITION_NAME),
	  "Invalid partition name specified"			},
	{ ERRTAB_ENTRY(ESLURM_DEFAULT_PARTITION_NOT_SET),
	  "No partition specified or system default partition"	},
	{ ERRTAB_ENTRY(ESLURM_ACCESS_DENIED),
	  "Access/permission denied"				},
	{ ERRTAB_ENTRY(ESLURM_JOB_MISSING_REQUIRED_PARTITION_GROUP),
	  "User's group not permitted to use this partition"	},
	{ ERRTAB_ENTRY(ESLURM_REQUESTED_NODES_NOT_IN_PARTITION),
	  "Requested nodes not in this partition"		},
	{ ERRTAB_ENTRY(ESLURM_TOO_MANY_REQUESTED_CPUS),
	  "More processors requested than permitted"		},
	{ ERRTAB_ENTRY(ESLURM_INVALID_NODE_COUNT),
	  "Node count specification invalid"			},
	{ ERRTAB_ENTRY(ESLURM_ERROR_ON_DESC_TO_RECORD_COPY),
	  "Unable to create job record, try again"		},
	{ ERRTAB_ENTRY(ESLURM_JOB_MISSING_SIZE_SPECIFICATION),
	  "Job size specification needs to be provided"		},
	{ ERRTAB_ENTRY(ESLURM_JOB_SCRIPT_MISSING),
	  "Job script not specified"				},
	{ ERRTAB_ENTRY(ESLURM_USER_ID_MISSING),
	  "Invalid user id"					},
	{ ERRTAB_ENTRY(ESLURM_DUPLICATE_JOB_ID),
	  "Duplicate job id"					},
	{ ERRTAB_ENTRY(ESLURM_PATHNAME_TOO_LONG),
	  "Pathname of a file, directory or other parameter too long" },
	{ ERRTAB_ENTRY(ESLURM_NOT_TOP_PRIORITY),
	  "Immediate execution impossible, insufficient priority" },
	{ ERRTAB_ENTRY(ESLURM_REQUESTED_NODE_CONFIG_UNAVAILABLE),
	  "Requested node configuration is not available"	},
	{ ERRTAB_ENTRY(ESLURM_REQUESTED_PART_CONFIG_UNAVAILABLE),
	  "Requested partition configuration not available now" },
	{ ERRTAB_ENTRY(ESLURM_NODES_BUSY),
	  "Requested nodes are busy"				},
	{ ERRTAB_ENTRY(ESLURM_INVALID_JOB_ID),
	  "Invalid job id specified"				},
	{ ERRTAB_ENTRY(ESLURM_INVALID_NODE_NAME),
	  "Invalid node name specified"				},
	{ ERRTAB_ENTRY(ESLURM_INVALID_CORE_CNT),
	  "Core count for reservation node list is not consistent!" },
	{ ERRTAB_ENTRY(ESLURM_WRITING_TO_FILE),
	  "I/O error writing script/environment to file"	},
	{ ERRTAB_ENTRY(ESLURM_TRANSITION_STATE_NO_UPDATE),
	  "Job can not be altered now, try again later"		},
	{ ERRTAB_ENTRY(ESLURM_ALREADY_DONE),
	  "Job/step already completing or completed"		},
	{ ERRTAB_ENTRY(ESLURM_INTERCONNECT_FAILURE),
	  "Error configuring interconnect"			},
	{ ERRTAB_ENTRY(ESLURM_BAD_DIST),
	  "Task distribution specification invalid"		},
	{ ERRTAB_ENTRY(ESLURM_JOB_PENDING),
	  "Job is pending execution"				},
	{ ERRTAB_ENTRY(ESLURM_BAD_TASK_COUNT),
	  "Task count specification invalid"			},
	{ ERRTAB_ENTRY(ESLURM_INVALID_JOB_CREDENTIAL),
	  "Error generating job credential"			},
	{ ERRTAB_ENTRY(ESLURM_IN_STANDBY_MODE),
	  "Slurm backup controller in standby mode"		},
	{ ERRTAB_ENTRY(ESLURM_INVALID_NODE_STATE),
	  "Invalid node state specified"			},
	{ ERRTAB_ENTRY(ESLURM_INVALID_FEATURE),
	  "Invalid feature specification"			},
	{ ERRTAB_ENTRY(ESLURM_INVALID_AUTHTYPE_CHANGE),
	  "AuthType change requires restart of all Slurm daemons and "
	  "commands to take effect"},
	{ ERRTAB_ENTRY(ESLURM_ACTIVE_FEATURE_NOT_SUBSET),
	  "Active features not subset of available features"	},
	{ ERRTAB_ENTRY(ESLURM_INVALID_CRED_TYPE_CHANGE),
	  "CredType change requires restart of all Slurm daemons "
	  "to take effect"					},
	{ ERRTAB_ENTRY(ESLURM_INVALID_SCHEDTYPE_CHANGE),
	  "SchedulerType change requires restart of the slurmctld daemon "
	  "to take effect"					},
	{ ERRTAB_ENTRY(ESLURM_INVALID_SELECTTYPE_CHANGE),
	  "SelectType change requires restart of the slurmctld daemon "
	  "to take effect"					},
	{ ERRTAB_ENTRY(ESLURM_INVALID_SWITCHTYPE_CHANGE),
	  "SwitchType change requires restart of all Slurm daemons and "
	  "jobs to take effect"					},
	{ ERRTAB_ENTRY(ESLURM_FRAGMENTATION),
	  "Immediate execution impossible, "
	  "resources too fragmented for allocation"		},
	{ ERRTAB_ENTRY(ESLURM_NOT_SUPPORTED),
	  "Requested operation not supported on this system"	},
	{ ERRTAB_ENTRY(ESLURM_DISABLED),
	  "Requested operation is presently disabled"		},
	{ ERRTAB_ENTRY(ESLURM_DEPENDENCY),
	  "Job dependency problem"				},
	{ ERRTAB_ENTRY(ESLURM_BATCH_ONLY),
	  "Only batch jobs are accepted or processed"		},
	{ ERRTAB_ENTRY(ESLURM_LICENSES_UNAVAILABLE),
	  "Licenses currently unavailable"			},
	{ ERRTAB_ENTRY(ESLURM_TAKEOVER_NO_HEARTBEAT),
	  "Unable to takeover, heartbeat file is missing"	},
	{ ERRTAB_ENTRY(ESLURM_JOB_HELD),
	  "Job is in held state, pending scheduler release"	},
	{ ERRTAB_ENTRY(ESLURM_INVALID_TASK_MEMORY),
	  "Memory required by task is not available"		},
	{ ERRTAB_ENTRY(ESLURM_INVALID_ACCOUNT),
	  "Invalid account or account/partition combination specified"},
	{ ERRTAB_ENTRY(ESLURM_INVALID_PARENT_ACCOUNT),
	  "Invalid parent account specified"			},
	{ ERRTAB_ENTRY(ESLURM_SAME_PARENT_ACCOUNT),
	  "Account already child of parent account specified"   },
	{ ERRTAB_ENTRY(ESLURM_INVALID_QOS),
	  "Invalid qos specification"				},
	{ ERRTAB_ENTRY(ESLURM_INVALID_WCKEY),
	  "Invalid wckey specification"				},
	{ ERRTAB_ENTRY(ESLURM_INVALID_LICENSES),
	  "Invalid license specification"			},
	{ ERRTAB_ENTRY(ESLURM_NEED_RESTART),
	  "The node configuration changes that were made require restart "
	  "of the slurmctld daemon to take effect"},
	{ ERRTAB_ENTRY(ESLURM_ACCOUNTING_POLICY),
	  "Job violates accounting/QOS policy (job submit limit, user's "
	  "size and/or time limits)"},
	{ ERRTAB_ENTRY(ESLURM_INVALID_TIME_LIMIT),
	  "Requested time limit is invalid (missing or exceeds some limit)"},
	{ ERRTAB_ENTRY(ESLURM_RESERVATION_ACCESS),
	  "Access denied to requested reservation"		},
	{ ERRTAB_ENTRY(ESLURM_RESERVATION_INVALID),
	  "Requested reservation is invalid"			},
	{ ERRTAB_ENTRY(ESLURM_INVALID_TIME_VALUE),
	  "Invalid time specified"				},
	{ ERRTAB_ENTRY(ESLURM_RESERVATION_BUSY),
	  "Requested reservation is in use"			},
	{ ERRTAB_ENTRY(ESLURM_RESERVATION_NOT_USABLE),
	  "Requested reservation not usable now"		},
	{ ERRTAB_ENTRY(ESLURM_RESERVATION_OVERLAP),
	  "Requested reservation overlaps with another reservation"	},
	{ ERRTAB_ENTRY(ESLURM_PORTS_BUSY),
	  "Required ports are in use"				},
	{ ERRTAB_ENTRY(ESLURM_PORTS_INVALID),
	  "Requires more ports than can be reserved"		},
	{ ERRTAB_ENTRY(ESLURM_PROLOG_RUNNING),
	  "PrologSlurmctld is still running"			},
	{ ERRTAB_ENTRY(ESLURM_NO_STEPS),
	  "Job steps can not be run on this cluster"		},
	{ ERRTAB_ENTRY(ESLURM_MISSING_WORK_DIR),
	  "Job cannot be submitted without the current working directory specified." },
	{ ERRTAB_ENTRY(ESLURM_QOS_PREEMPTION_LOOP),
	  "QOS Preemption loop detected"                	},
	{ ERRTAB_ENTRY(ESLURM_NODE_NOT_AVAIL),
	  "Required node not available (down, drained or reserved)"},
	{ ERRTAB_ENTRY(ESLURM_INVALID_CPU_COUNT),
	  "CPU count specification invalid"             	},
	{ ERRTAB_ENTRY(ESLURM_PARTITION_NOT_AVAIL),
	  "Required partition not available (inactive or drain)"},
	{ ERRTAB_ENTRY(ESLURM_CIRCULAR_DEPENDENCY),
	  "Circular job dependency"				},
	{ ERRTAB_ENTRY(ESLURM_INVALID_GRES),
	  "Invalid generic resource (gres) specification"	},
	{ ERRTAB_ENTRY(ESLURM_JOB_NOT_PENDING),
	  "Job is no longer pending execution"			},
	{ ERRTAB_ENTRY(ESLURM_QOS_THRES),
	  "Requested account has breached requested QOS usage threshold"},
	{ ERRTAB_ENTRY(ESLURM_PARTITION_IN_USE),
	  "Partition is in use"					},
	{ ERRTAB_ENTRY(ESLURM_STEP_LIMIT),
	  "Step limit reached for this job"			},
	{ ERRTAB_ENTRY(ESLURM_JOB_SUSPENDED),
	  "Job is current suspended, requested operation disabled"	},
	{ ERRTAB_ENTRY(ESLURM_CAN_NOT_START_IMMEDIATELY),
	  "Job can not start immediately"			},
	{ ERRTAB_ENTRY(ESLURM_INTERCONNECT_BUSY),
	  "Switch resources currently not available"		},
	{ ERRTAB_ENTRY(ESLURM_RESERVATION_EMPTY),
	  "Reservation request lacks users, groups or accounts"		},
	{ ERRTAB_ENTRY(ESLURM_INVALID_ARRAY),
	  "Invalid job array specification"			},
	{ ERRTAB_ENTRY(ESLURM_RESERVATION_NAME_DUP),
	  "Duplicate reservation name"				},
	{ ERRTAB_ENTRY(ESLURM_JOB_STARTED),
	  "Job has already started"				},
	{ ERRTAB_ENTRY(ESLURM_JOB_FINISHED),
	  "Job has already finished"				},
	{ ERRTAB_ENTRY(ESLURM_JOB_NOT_RUNNING),
	  "Job is not running"},
	{ ERRTAB_ENTRY(ESLURM_JOB_NOT_PENDING_NOR_RUNNING),
	  "Job is not pending nor running"			},
	{ ERRTAB_ENTRY(ESLURM_JOB_NOT_SUSPENDED),
	  "Job is not suspended"				},
	{ ERRTAB_ENTRY(ESLURM_JOB_NOT_FINISHED),
	  "Job is not finished"					},
	{ ERRTAB_ENTRY(ESLURM_TRIGGER_DUP),
	  "Duplicate event trigger"				},
	{ ERRTAB_ENTRY(ESLURM_INTERNAL),
	  "Slurm internal error, contact system administrator"	},
	{ ERRTAB_ENTRY(ESLURM_INVALID_BURST_BUFFER_CHANGE),
	  "BurstBufferType change requires restart of slurmctld daemon "
	  "to take effect"},
	{ ERRTAB_ENTRY(ESLURM_BURST_BUFFER_PERMISSION),
	  "Burst Buffer permission denied"			},
	{ ERRTAB_ENTRY(ESLURM_BURST_BUFFER_LIMIT),
	  "Burst Buffer resource limit exceeded"		},
	{ ERRTAB_ENTRY(ESLURM_INVALID_BURST_BUFFER_REQUEST),
	  "Burst Buffer request invalid"			},
	{ ERRTAB_ENTRY(ESLURM_PRIO_RESET_FAIL),
	  "Changes to job priority are not persistent, change nice instead" },
	{ ERRTAB_ENTRY(ESLURM_CANNOT_MODIFY_CRON_JOB),
	  "Cannot modify scrontab jobs through scontrol"	},
	{ ERRTAB_ENTRY(ESLURM_INVALID_JOB_CONTAINER_CHANGE),
	  "JobContainerType change requires restart of all Slurm daemons and commands to take effect" },
	{ ERRTAB_ENTRY(ESLURM_CANNOT_CANCEL_CRON_JOB),
	  "Cannot cancel scrontab jobs without --cron flag."	},
	{ ERRTAB_ENTRY(ESLURM_INVALID_MCS_LABEL),
	  "Invalid mcs_label specified"				},
	{ ERRTAB_ENTRY(ESLURM_BURST_BUFFER_WAIT),
	  "Waiting for burst buffer"				},
	{ ERRTAB_ENTRY(ESLURM_PARTITION_DOWN),
	  "Partition in DOWN state"				},
	{ ERRTAB_ENTRY(ESLURM_DUPLICATE_GRES),
	  "Duplicate generic resource (gres) specification"	},
	{ ERRTAB_ENTRY(ESLURM_RSV_ALREADY_STARTED),
	  "Reservation already started"				},
	{ ERRTAB_ENTRY(ESLURM_SUBMISSIONS_DISABLED),
	  "System submissions disabled"				},
	{ ERRTAB_ENTRY(ESLURM_NOT_HET_JOB),
	  "Job not heterogeneous job"				},
	{ ERRTAB_ENTRY(ESLURM_NOT_HET_JOB_LEADER),
	  "Job not heterogeneous job leader"			},
	{ ERRTAB_ENTRY(ESLURM_NOT_WHOLE_HET_JOB),
	  "Operation not permitted on individual component of heterogeneous job" },
	{ ERRTAB_ENTRY(ESLURM_CORE_RESERVATION_UPDATE),
	  "Core-based reservation can not be updated"		},
	{ ERRTAB_ENTRY(ESLURM_DUPLICATE_STEP_ID),
	  "Duplicate job step id"				},
	{ ERRTAB_ENTRY(ESLURM_X11_NOT_AVAIL),
	  "X11 forwarding not available"			},
	{ ERRTAB_ENTRY(ESLURM_GROUP_ID_MISSING),
	  "Invalid group id"					},
	{ ERRTAB_ENTRY(ESLURM_BATCH_CONSTRAINT),
	  "Job --batch option is invalid or not a subset of --constraint" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_TRES),
	  "Invalid Trackable RESource (TRES) specification"	},
	{ ERRTAB_ENTRY(ESLURM_INVALID_TRES_BILLING_WEIGHTS),
	  "Invalid TRESBillingWeights specification"            },
	{ ERRTAB_ENTRY(ESLURM_INVALID_JOB_DEFAULTS),
	  "Invalid JobDefaults specification"			},
	{ ERRTAB_ENTRY(ESLURM_RESERVATION_MAINT),
	  "Job can not start due to maintenance reservation."	},
	{ ERRTAB_ENTRY(ESLURM_INVALID_GRES_TYPE),
	  "Invalid GRES specification (with and without type identification)" },
	{ ERRTAB_ENTRY(ESLURM_REBOOT_IN_PROGRESS),
	  "Reboot already in progress" },
	{ ERRTAB_ENTRY(ESLURM_MULTI_KNL_CONSTRAINT),
	  "Multiple KNL NUMA and/or MCDRAM constraints require use of a heterogeneous job" },
	{ ERRTAB_ENTRY(ESLURM_UNSUPPORTED_GRES),
	  "Requested GRES option unsupported by configured SelectType plugin" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_NICE),
	  "Invalid --nice value"				},
	{ ERRTAB_ENTRY(ESLURM_INVALID_TIME_MIN_LIMIT),
	  "Invalid time-min specification (exceeds job's time or other limits)"},
	{ ERRTAB_ENTRY(ESLURM_DEFER),
	  "Immediate execution impossible. "
	  "Individual job submission scheduling attempts deferred"},
	{ ERRTAB_ENTRY(ESLURM_CONFIGLESS_DISABLED),
	  "ConfigLess mode is disabled in slurm configuration."	},
	{ ERRTAB_ENTRY(ESLURM_ENVIRONMENT_MISSING),
	  "Environment is missing in job"			},
	{ ERRTAB_ENTRY(ESLURM_RESERVATION_NO_SKIP),
	  "Reservation given is not skipable, try deleting instead"},
	{ ERRTAB_ENTRY(ESLURM_RESERVATION_USER_GROUP),
	  "Reservations can't have users and groups specified, only one or the other"},
	{ ERRTAB_ENTRY(ESLURM_PARTITION_ASSOC),
	  "Multiple partition job request not supported when a partition is set in the association" },
	{ ERRTAB_ENTRY(ESLURM_IN_STANDBY_USE_BACKUP),
	  "Controller is in standby mode, try a different controller"},
	{ ERRTAB_ENTRY(ESLURM_BAD_THREAD_PER_CORE),
	  "Cannot request more threads per core than the job allocation" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_PREFER),
	  "Invalid preferred feature specification"		},
	{ ERRTAB_ENTRY(ESLURM_INSUFFICIENT_GRES),
	  "Insufficient GRES available in allocation"		},
	{ ERRTAB_ENTRY(ESLURM_INVALID_CONTAINER_ID),
	  "Invalid container id specified"			},
	{ ERRTAB_ENTRY(ESLURM_EMPTY_JOB_ID),
	  "JobID must not be an empty string" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_JOB_ID_ZERO),
	  "JobID can not be zero" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_JOB_ID_NEGATIVE),
	  "JobID can not be a negative number" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_JOB_ID_TOO_LARGE),
	  "JobID larger than acceptable range" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_JOB_ID_NON_NUMERIC),
	  "JobID includes unexpected non-numeric characters" },
	{ ERRTAB_ENTRY(ESLURM_EMPTY_JOB_ARRAY_ID),
	  "Job Array ID must not be an empty string" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_JOB_ARRAY_ID_NEGATIVE),
	  "Job Array ID can not be a negative number" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_JOB_ARRAY_ID_TOO_LARGE),
	  "Job Array ID larger than acceptable range" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_JOB_ARRAY_ID_NON_NUMERIC),
	  "Job Array ID includes unexpected non-numeric characters" },
	{ ERRTAB_ENTRY(ESLURM_EMPTY_HET_JOB_COMP),
	  "HetJob component must not be an empty string" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_HET_JOB_COMP_NEGATIVE),
	  "HetJob component can not be a negative number" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_HET_JOB_COMP_TOO_LARGE),
	  "HetJob component larger than acceptable range" },
	{ ERRTAB_ENTRY(ESLURM_EMPTY_STEP_ID),
	  "StepID must not be an empty string" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_STEP_ID_NEGATIVE),
	  "StepID can not be a negative number" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_STEP_ID_TOO_LARGE),
	  "StepID larger than acceptable range" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_STEP_ID_NON_NUMERIC),
	  "StepID includes unexpected non-numeric characters" },
	{ ERRTAB_ENTRY(ESLURM_EMPTY_HET_STEP),
	  "HetStep component must not be an empty string" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_HET_STEP_ZERO),
	  "HetStep component can not be zero" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_HET_STEP_NEGATIVE),
	  "HetStep component can not be a negative number" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_HET_STEP_TOO_LARGE),
	  "HetStep component larger than acceptable range" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_HET_STEP_NON_NUMERIC),
	  "HetStep component includes unexpected non-numeric characters" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_HET_STEP_JOB),
	  "HetJob can not Het step id" },
	{ ERRTAB_ENTRY(ESLURM_JOB_TIMEOUT_KILLED),
	  "Job killed due hitting max wall clock limit" },
	{ ERRTAB_ENTRY(ESLURM_JOB_NODE_FAIL_KILLED),
	  "Job killed due node failure" },
	{ ERRTAB_ENTRY(ESLURM_EMPTY_LIST),
	  "Empty list" },
	{ ERRTAB_ENTRY(ESLURM_GROUP_ID_INVALID),
	  "Invalid group ID" },
	{ ERRTAB_ENTRY(ESLURM_GROUP_ID_UNKNOWN),
	  "Unable to resolve group ID to group name" },
	{ ERRTAB_ENTRY(ESLURM_USER_ID_INVALID),
	  "Invalid user ID" },
	{ ERRTAB_ENTRY(ESLURM_USER_ID_UNKNOWN),
	  "Unable to resolve user ID to user name" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_ASSOC),
	  "Invalid or unknown association" },
	{ ERRTAB_ENTRY(ESLURM_NODE_ALREADY_EXISTS),
	  "Node already exists in the node table" },
	{ ERRTAB_ENTRY(ESLURM_NODE_TABLE_FULL),
	  "Unable to add node, node table is full" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_RELATIVE_QOS),
	  "Invalid QOS specification, relative QOS can only be used in a single partition per cluster." },
	{ ERRTAB_ENTRY(ESLURM_INVALID_EXTRA),
	  "Invalid extra constraints specification" },
	{ ERRTAB_ENTRY(ESLURM_JOB_SIGNAL_FAILED),
	  "Cannot signal job" },
	{ ERRTAB_ENTRY(ESLURM_SIGNAL_JOBS_INVALID),
	  "Invalid signal jobs request, at least one job id or filter is required." },
	{ ERRTAB_ENTRY(ESLURM_RES_CORES_PER_GPU_UNIQUE),
	  "RestrictedCoresPerGPU: Not enough unique cores per GPU" },
	{ ERRTAB_ENTRY(ESLURM_RES_CORES_PER_GPU_TOPO),
	  "RestrictedCoresPerGPU: Missing core topology for GPUs" },
	{ ERRTAB_ENTRY(ESLURM_RES_CORES_PER_GPU_NO),
	  "RestrictedCoresPerGPU: No GPUs configured on node" },
	{ ERRTAB_ENTRY(ESLURM_MAX_POWERED_NODES),
	  "Max powered up nodes reached" },
	{ ERRTAB_ENTRY(ESLURM_REQUESTED_TOPO_CONFIG_UNAVAILABLE),
	  "Requested topology configuration is not available" },
	{ ERRTAB_ENTRY(ESLURM_PREEMPTION_REQUIRED),
	  "Preemption is required but is disabled on this system" },
	{ ERRTAB_ENTRY(ESLURM_INVALID_NODE_STATE_TRANSITION),
	  "Invalid node state transition"			},
	{ ERRTAB_ENTRY(ESLURM_INVALID_JOB_STATE),
	  "Invalid job state" },

	/* SPANK errors */
	{ ERRTAB_ENTRY(ESPANK_ERROR),
	  "Generic error"					},
	{ ERRTAB_ENTRY(ESPANK_BAD_ARG),
	  "Bad argument"					},
	{ ERRTAB_ENTRY(ESPANK_NOT_TASK),
	  "Not in task context"					},
	{ ERRTAB_ENTRY(ESPANK_ENV_EXISTS),
	  "Environment variable exists"				},
	{ ERRTAB_ENTRY(ESPANK_ENV_NOEXIST),
	  "No such environment variable"			},
	{ ERRTAB_ENTRY(ESPANK_NOSPACE),
	  "Buffer too small"					},
	{ ERRTAB_ENTRY(ESPANK_NOT_REMOTE),
	  "Valid only in remote context"			},
	{ ERRTAB_ENTRY(ESPANK_NOEXIST),
	  "Id/PID does not exist on this node"			},
	{ ERRTAB_ENTRY(ESPANK_NOT_EXECD),
	  "Lookup by PID requested, but no tasks running"	},
	{ ERRTAB_ENTRY(ESPANK_NOT_AVAIL),
	  "Item not available from this callback"		},
	{ ERRTAB_ENTRY(ESPANK_NOT_LOCAL),
	  "Valid only in local or allocator context"		},
	{ ERRTAB_ENTRY(ESPANK_NODE_FAILURE),
	  "Spank plugin failure, node failed" },
	{ ERRTAB_ENTRY(ESPANK_JOB_FAILURE),
	  "Spank plugin failure, job failed" },

	/* slurmd error codes */
	{ ERRTAB_ENTRY(ESLURMD_KILL_TASK_FAILED),
	  "Kill task failed"					},
	{ ERRTAB_ENTRY(ESLURMD_INVALID_ACCT_FREQ),
	  "Invalid accounting frequency requested"		},
	{ ERRTAB_ENTRY(ESLURMD_INVALID_JOB_CREDENTIAL),
	  "Invalid job credential"				},
	{ ERRTAB_ENTRY(ESLURMD_CREDENTIAL_REVOKED),
	  "Job credential revoked"                              },
	{ ERRTAB_ENTRY(ESLURMD_CREDENTIAL_EXPIRED),
	  "Job credential expired"                              },
	{ ERRTAB_ENTRY(ESLURMD_CREDENTIAL_REPLAYED),
	  "Job credential replayed"                             },
	{ ERRTAB_ENTRY(ESLURMD_CREATE_BATCH_DIR_ERROR),
	  "Slurmd could not create a batch directory or file"	},
	{ ERRTAB_ENTRY(ESLURMD_SETUP_ENVIRONMENT_ERROR),
	  "Slurmd could not set up environment for batch job"	},
	{ ERRTAB_ENTRY(ESLURMD_SET_UID_OR_GID_ERROR),
	  "Slurmd could not set UID or GID"			},
	{ ERRTAB_ENTRY(ESLURMD_EXECVE_FAILED),
	  "Slurmd could not execve job"				},
	{ ERRTAB_ENTRY(ESLURMD_IO_ERROR),
	  "Slurmd could not connect IO"			        },
	{ ERRTAB_ENTRY(ESLURMD_PROLOG_FAILED),
	  "Job prolog failed"			        	},
	{ ERRTAB_ENTRY(ESLURMD_EPILOG_FAILED),
	  "Job epilog failed"			        	},
	{ ERRTAB_ENTRY(ESLURMD_TOOMANYSTEPS),
	  "Too many job steps on node"		        	},
	{ ERRTAB_ENTRY(ESLURMD_STEP_EXISTS),
	  "Job step already exists"		        	},
	{ ERRTAB_ENTRY(ESLURMD_STEP_NOTRUNNING),
	  "Job step not running"	        	        },
	{ ERRTAB_ENTRY(ESLURMD_STEP_SUSPENDED),
	  "Job step is suspended"                               },
	{ ERRTAB_ENTRY(ESLURMD_STEP_NOTSUSPENDED),
	  "Job step is not currently suspended"                 },
	{ ERRTAB_ENTRY(ESLURMD_INVALID_SOCKET_NAME_LEN),
	  "Unix socket name exceeded maximum length"		},
	{ ERRTAB_ENTRY(ESLURMD_CONTAINER_RUNTIME_INVALID),
	  "Container runtime not configured or invalid"		},
	{ ERRTAB_ENTRY(ESLURMD_CPU_BIND_ERROR),
	  "Unable to satisfy cpu bind request"			},
	{ ERRTAB_ENTRY(ESLURMD_CPU_LAYOUT_ERROR),
	  "Unable to layout tasks on given cpus"		},
	{ ERRTAB_ENTRY(ESLURMD_STEPD_PROXY_FAILED),
	  "Unable to proxy slurmstepd message"			},

	/* socket specific Slurm communications error */

	{ ERRTAB_ENTRY(ESLURM_PROTOCOL_INCOMPLETE_PACKET),
	  "Header lengths are longer than data received"	},
	{ ERRTAB_ENTRY(SLURM_PROTOCOL_SOCKET_IMPL_TIMEOUT),
	  "Socket timed out on send/recv operation"		},
	{ ERRTAB_ENTRY(SLURM_PROTOCOL_SOCKET_ZERO_BYTES_SENT),
	  "Zero Bytes were transmitted or received"		},

	/* slurm_auth errors */

	{ ERRTAB_ENTRY(ESLURM_AUTH_CRED_INVALID),
	  "Invalid authentication credential"			},
	{ ERRTAB_ENTRY(ESLURM_AUTH_EXPIRED),
	  "Authentication credential expired"			},
	{ ERRTAB_ENTRY(ESLURM_AUTH_BADARG),
	  "Bad argument to plugin function"			},
	{ ERRTAB_ENTRY(ESLURM_AUTH_UNPACK),
	  "Cannot unpack credential"				},
	{ ERRTAB_ENTRY(ESLURM_AUTH_SKIP),
	  "Authentication does not apply to request"		},
	{ ERRTAB_ENTRY(ESLURM_AUTH_UNABLE_TO_GENERATE_TOKEN),
	  "Token Generation failed."				},

	/* accounting errors */
	{ ERRTAB_ENTRY(ESLURM_DB_CONNECTION),
	  "Unable to connect to database"			},
	{ ERRTAB_ENTRY(ESLURM_JOBS_RUNNING_ON_ASSOC),
	  "Job(s) active, cancel job(s) before remove"		},
	{ ERRTAB_ENTRY(ESLURM_CLUSTER_DELETED),
	  "Cluster deleted, commit/rollback immediately"        },
	{ ERRTAB_ENTRY(ESLURM_ONE_CHANGE),
	  "Can only change one at a time"                       },
	{ ERRTAB_ENTRY(ESLURM_BAD_NAME),
	  "Unacceptable name given. (No '.' in name allowed)"   },
	{ ERRTAB_ENTRY(ESLURM_OVER_ALLOCATE),
	  "You can not allocate more than 100% of a resource"	},
	{ ERRTAB_ENTRY(ESLURM_RESULT_TOO_LARGE),
	  "Query result exceeds size limit"			},
	{ ERRTAB_ENTRY(ESLURM_DB_QUERY_TOO_WIDE),
	  "Too wide of a date range in query"			},
	{ ERRTAB_ENTRY(ESLURM_DB_CONNECTION_INVALID),
	  "Database connection reference is invalid"		},
	{ ERRTAB_ENTRY(ESLURM_NO_REMOVE_DEFAULT_ACCOUNT),
	  "You can not remove the default account of a user"	},
	{ ERRTAB_ENTRY(ESLURM_BAD_SQL),
	  "There is something internally wrong with the SQL needed for this. Please consult the slurmdbd log for more info."                    },
	{ ERRTAB_ENTRY(ESLURM_NO_REMOVE_DEFAULT_QOS),
	  "This request would make it so some associations would not have access to their default qos."                                         },
	{ ERRTAB_ENTRY(ESLURM_COORD_NO_INCREASE_JOB_LIMIT),
	  "Coordinators can not increase job limits beyond the parent ones" },
	{ ERRTAB_ENTRY(ESLURM_NO_RPC_STATS), "No RPC stats are available" },

	/* Federation Errors */
	{ ERRTAB_ENTRY(ESLURM_FED_CLUSTER_MAX_CNT),
	  "Too many clusters in federation"			},
	{ ERRTAB_ENTRY(ESLURM_FED_CLUSTER_MULTIPLE_ASSIGNMENT),
	  "Clusters can only be assigned to one federation" 	},
	{ ERRTAB_ENTRY(ESLURM_INVALID_CLUSTER_FEATURE),
	  "Invalid cluster feature specification"		},
	{ ERRTAB_ENTRY(ESLURM_JOB_NOT_FEDERATED),
	  "Not a valid federated job"				},
	{ ERRTAB_ENTRY(ESLURM_INVALID_CLUSTER_NAME),
	  "Invalid cluster name"				},
	{ ERRTAB_ENTRY(ESLURM_FED_JOB_LOCK),
	  "Job locked by another sibling"			},
	{ ERRTAB_ENTRY(ESLURM_FED_NO_VALID_CLUSTERS),
	  "No eligible clusters for federated job"		},

	/* Lua wrapper errors */
	{ ERRTAB_ENTRY(ESLURM_LUA_INVALID_STATE),
	  "Invalid or NULL Lua state pointer" },
	{ ERRTAB_ENTRY(ESLURM_LUA_INVALID_SYNTAX),
	  "Lua script loading failed due to invalid syntax" },
	{ ERRTAB_ENTRY(ESLURM_LUA_FUNC_NOT_FOUND),
	  "Requested Lua function not found" },
	{ ERRTAB_ENTRY(ESLURM_LUA_FUNC_INVALID_RC),
	  "Lua function returned nil or table instead of numeric result" },
	{ ERRTAB_ENTRY(ESLURM_LUA_FUNC_FAILED),
	  "Lua function execution failed for unknown reasons" },
	{ ERRTAB_ENTRY(ESLURM_LUA_FUNC_FAILED_RUNTIME_ERROR),
	  "Lua function execution failed due to runtime error" },
	{ ERRTAB_ENTRY(ESLURM_LUA_FUNC_FAILED_ENOMEM),
	  "Lua function execution failed due to memory allocation failure. Either not enough memory for Lua script's variables or memory allocation request for a variable was way too large." },
	{ ERRTAB_ENTRY(ESLURM_LUA_FUNC_FAILED_GARBAGE_COLLECTOR),
	  "Lua function execution failed due to unknown failure in Lua's garbage collector" },
	{ ERRTAB_ENTRY(ESLURM_LUA_INVALID_CONVERSION_TYPE),
	  "Unknown or unparsable Lua type found at top of Lua stack" },

	/* plugin and custom errors */
	{ ERRTAB_ENTRY(ESLURM_MISSING_TIME_LIMIT),
	  "Time limit specification required, but not provided"	},
	{ ERRTAB_ENTRY(ESLURM_INVALID_KNL),
	  "Invalid KNL configuration (MCDRAM or NUMA option)"	},
	{ ERRTAB_ENTRY(ESLURM_PLUGIN_INVALID),
	  "Plugin has invalid format or unable to be loaded"	},
	{ ERRTAB_ENTRY(ESLURM_PLUGIN_INCOMPLETE),
	  "Plugin missing required symbol or function"		},
	{ ERRTAB_ENTRY(ESLURM_PLUGIN_NOT_LOADED),
	  "Required plugin type not loaded or initialized"	},
	{ ERRTAB_ENTRY(ESLURM_PLUGIN_NOTFOUND),
	  "Plugin file not found"				},
	{ ERRTAB_ENTRY(ESLURM_PLUGIN_ACCESS_ERROR),
	  "Plugin access denied"				},
	{ ERRTAB_ENTRY(ESLURM_PLUGIN_DLOPEN_FAILED),
	  "Dlopen of plugin file failed"			},
	{ ERRTAB_ENTRY(ESLURM_PLUGIN_INIT_FAILED),
	  "Plugin init() callback failed"			},
	{ ERRTAB_ENTRY(ESLURM_PLUGIN_MISSING_NAME),
	  "Plugin name/type/version symbol missing"		},
	{ ERRTAB_ENTRY(ESLURM_PLUGIN_BAD_VERSION),
	  "Incompatible plugin version"				},

	/* REST errors */
	{ ERRTAB_ENTRY(ESLURM_REST_INVALID_QUERY),
	  "Query empty or not RFC7320 compliant"},
	{ ERRTAB_ENTRY(ESLURM_REST_FAIL_PARSING),
	  "Failure during parsing"},
	{ ERRTAB_ENTRY(ESLURM_REST_INVALID_JOBS_DESC),
	  "Jobs description entry not found, empty or not dictionary or list"},
	{ ERRTAB_ENTRY(ESLURM_REST_EMPTY_RESULT),
	  "Nothing found with query"},
	{ ERRTAB_ENTRY(ESLURM_REST_MISSING_UID),
	  "Missing UNIX user in the system"},
	{ ERRTAB_ENTRY(ESLURM_REST_MISSING_GID),
	  "Missing UNIX group in the system"},

	/* data_t errors */
	{ ERRTAB_ENTRY(ESLURM_DATA_PATH_NOT_FOUND),
	  "Unable to resolve path"},
	{ ERRTAB_ENTRY(ESLURM_DATA_PTR_NULL),
	  "Data pointer is NULL"},
	{ ERRTAB_ENTRY(ESLURM_DATA_CONV_FAILED),
	  "Unable to convert Data type"},
	{ ERRTAB_ENTRY(ESLURM_DATA_REGEX_COMPILE),
	  "Unable to compile regex"},
	{ ERRTAB_ENTRY(ESLURM_DATA_UNKNOWN_MIME_TYPE),
	  "MIME type is unknown to any loaded plugins"},
	{ ERRTAB_ENTRY(ESLURM_DATA_TOO_LARGE),
	  "Data too large to handle"},
	{ ERRTAB_ENTRY(ESLURM_DATA_FLAGS_INVALID_TYPE),
	  "Data parser expects flags to be a list"},
	{ ERRTAB_ENTRY(ESLURM_DATA_FLAGS_INVALID),
	  "Data parser unable to parse invalid flag"},
	{ ERRTAB_ENTRY(ESLURM_DATA_EXPECTED_LIST),
	  "Data parser expected a list"},
	{ ERRTAB_ENTRY(ESLURM_DATA_EXPECTED_DICT),
	  "Data parser expected a dictionary or object"},
	{ ERRTAB_ENTRY(ESLURM_DATA_AMBIGUOUS_MODIFY),
	  "Request matched more than one object to modify. Modifications must only apply to a single object. Try adding more properties to make update match a unique object."},
	{ ERRTAB_ENTRY(ESLURM_DATA_AMBIGUOUS_QUERY),
	  "Request matched more than one object to query. Request is limited to query of a single matching object."},
	{ ERRTAB_ENTRY(ESLURM_DATA_PARSE_NOTHING),
	  "Request to parse empty string rejected"},
	{ ERRTAB_ENTRY(ESLURM_DATA_INVALID_PARSER),
	  "Invalid parser requested"},
	{ ERRTAB_ENTRY(ESLURM_DATA_PARSING_DEPTH),
	  "Parsing tree too deep. Possible cyclic parsing detected"},
	{ ERRTAB_ENTRY(ESLURM_DATA_PARSER_INVALID_STATE),
	  "Parser went into an invalid state. Possible library issue."},

	/* container  errors */
	{ ERRTAB_ENTRY(ESLURM_CONTAINER_NOT_CONFIGURED),
	  "Container support is not configured"},

	/* url errors */
	{ ERRTAB_ENTRY(ESLURM_URL_UNKNOWN_SCHEME),
	  "Unknown URL scheme"},
	{ ERRTAB_ENTRY(ESLURM_URL_EMPTY),
	  "URL string is empty"},
	{ ERRTAB_ENTRY(ESLURM_URL_NON_NULL_TERMINATOR),
	  "Invalid non-NULL terminated URL" },
	{ ERRTAB_ENTRY(ESLURM_URL_INVALID_FORMATING),
	  "Invalid format for URL format" },
	{ ERRTAB_ENTRY(ESLURM_URL_INVALID_SCHEME),
	  "Invalid or unknown URL scheme" },
	{ ERRTAB_ENTRY(ESLURM_URL_UNSUPPORTED_SCHEME),
	  "URL scheme not supported" },
	{ ERRTAB_ENTRY(ESLURM_URL_INVALID_HOST),
	  "Invalid or unknown URL host" },
	{ ERRTAB_ENTRY(ESLURM_URL_INVALID_PORT),
	  "Invalid or unknown URL port" },
	{ ERRTAB_ENTRY(ESLURM_URL_INVALID_PATH),
	  "Invalid or unknown URL path" },
	{ ERRTAB_ENTRY(ESLURM_URL_INVALID_QUERY),
	  "Invalid or unknown URL query" },
	{ ERRTAB_ENTRY(ESLURM_URL_INVALID_FRAGMENT),
	  "Invalid or unknown URL fragment" },
	{ ERRTAB_ENTRY(ESLURM_URL_UNSUPPORTED_FORMAT),
	  "URL format not supported" },

	/* http errors */
	{ ERRTAB_ENTRY(ESLURM_HTTP_EMPTY_HEADER),
	  "Invalid empty HTTP header" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_PARSING_FAILURE),
	  "Unspecified error during HTTP parsing" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_UNEXPECTED_URL),
	  "Unexpected duplicate URL" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_INVALID_STATUS_CODE),
	  "Invalid HTTP status code" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_INVALID_METHOD),
	  "Invalid HTTP method" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_MISSING_LF),
	  "Expected LF character but not found" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_INVALID_CHARACTER),
	  "Unexpected character added or missing in HTTP" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_INVALID_CONTENT_LENGTH),
	  "Unexpected character or unparsable number in HTTP Content-Length header" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_INVALID_TRANSFER_ENCODING),
	  "Invalid HTTP Tranfser-Encoding header" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_UNSUPPORTED_CHUNK_ENCODING),
	  "HTTP Chunked Transfer-Encoding not supported" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_UNEXPECTED_REQUEST),
	  "Received unexpected HTTP Request" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_UNSUPPORTED_VERSION),
	  "Only HTTP version 1.1 requests are supported" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_UNSUPPORTED_UPGRADE),
	  "HTTP protocol upgrading is not supported." },
	{ ERRTAB_ENTRY(ESLURM_HTTP_INVALID_CONTENT_ENCODING),
	  "Invalid or unsupported HTTP Content-Encoding header" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_UNSUPPORTED_EXPECT),
	  "Invalid or unsupported HTTP Content-Encoding header" },
	{ ERRTAB_ENTRY(ESLURM_HTTP_UNSUPPORTED_KEEP_ALIVE),
	  "Invalid or unsupported HTTP Keep-Alive header" },

	/* TLS errors */
	{ ERRTAB_ENTRY(ESLURM_TLS_REQUIRED),
	  "TLS missing but required for connection" },
};

unsigned int slurm_errtab_size = sizeof(slurm_errtab) / sizeof(slurm_errtab_t);

/*
 * Linear search through table of errno values and strings,
 * returns NULL on error, string on success.
 */
static char *_lookup_slurm_api_errtab(int errnum)
{
	char *res = NULL;
	int i;

	for (i = 0; i < slurm_errtab_size; i++) {
		if (slurm_errtab[i].xe_number == errnum) {
			res = slurm_errtab[i].xe_message;
			break;
		}
	}

	return res;
}

/*
 * Return string associated with error (Slurm or system).
 * Always returns a valid string (because strerror always does).
 */
char *slurm_strerror(int errnum)
{
	char *res = _lookup_slurm_api_errtab(errnum);
	if (res)
		return res;
	else if (errnum > 0)
		return strerror(errnum);
	else
		return "Unknown negative error number";
}

/*
 * Print "message: error description" on stderr for current errno value.
 */
void slurm_perror(const char *msg)
{
	fprintf(stderr, "%s: %s\n", msg, slurm_strerror(errno));
}
