aboutsummaryrefslogtreecommitdiff
path: root/src/hci
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2023-02-28 17:46:13 +0000
committerMichael Brown <mcb30@ipxe.org>2023-03-01 12:20:02 +0000
commit96bb6ba441653a30729ade38dc6c23bc9e2d2339 (patch)
tree9a1023d23aabdb096ac7a3d0df5554fbf40d73f7 /src/hci
parent33cb56cf1b7a7138542fe18fd86898fdca2e8f0a (diff)
downloadipxe-96bb6ba441653a30729ade38dc6c23bc9e2d2339.zip
ipxe-96bb6ba441653a30729ade38dc6c23bc9e2d2339.tar.gz
ipxe-96bb6ba441653a30729ade38dc6c23bc9e2d2339.tar.bz2
[params] Allow for arbitrary HTTP request headers to be specified
Extend the request parameter mechanism to allow for arbitrary HTTP headers to be specified via e.g.: params param --header Referer http://www.example.com imgfetch http://192.168.0.1/script.ipxe##params Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/hci')
-rw-r--r--src/hci/commands/param_cmd.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/hci/commands/param_cmd.c b/src/hci/commands/param_cmd.c
index 9e3260d..dad99f8 100644
--- a/src/hci/commands/param_cmd.c
+++ b/src/hci/commands/param_cmd.c
@@ -90,12 +90,16 @@ static int params_exec ( int argc, char **argv ) {
struct param_options {
/** Parameter list name */
char *params;
+ /** Parameter is a header */
+ int header;
};
/** "param" option list */
static struct option_descriptor param_opts[] = {
OPTION_DESC ( "params", 'p', required_argument,
struct param_options, params, parse_string ),
+ OPTION_DESC ( "header", 'H', no_argument,
+ struct param_options, header, parse_flag ),
};
/** "param" command descriptor */
@@ -114,6 +118,7 @@ static int param_exec ( int argc, char **argv ) {
struct param_options opts;
char *key;
char *value;
+ unsigned int flags;
struct parameters *params;
struct parameter *param;
int rc;
@@ -132,12 +137,15 @@ static int param_exec ( int argc, char **argv ) {
goto err_parse_value;
}
+ /* Construct flags */
+ flags = ( opts.header ? PARAMETER_HEADER : PARAMETER_FORM );
+
/* Identify parameter list */
if ( ( rc = parse_parameters ( opts.params, &params ) ) != 0 )
goto err_parse_parameters;
/* Add parameter */
- param = add_parameter ( params, key, value );
+ param = add_parameter ( params, key, value, flags );
if ( ! param ) {
rc = -ENOMEM;
goto err_add_parameter;