iPXE
params.h File Reference

Request parameters. More...

#include <ipxe/list.h>
#include <ipxe/refcnt.h>

Go to the source code of this file.

Data Structures

struct  parameters
 A request parameter list. More...
struct  parameter
 A request parameter. More...

Macros

#define PARAMETER_FORM   0x0001
 Request parameter is a form parameter.
#define PARAMETER_HEADER   0x0002
 Request parameter is a header parameter.
#define for_each_param(param, params)
 Iterate over all request parameters in a list.

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 FILE_SECBOOT (PERMITTED)
static __attribute__ ((always_inline)) struct parameters *params_get(struct parameters *params)
 Increment request parameter list reference count.
struct parametersfind_parameters (const char *name)
 Find request parameter list by name.
struct parameterscreate_parameters (const char *name)
 Create request parameter list.
struct parameteradd_parameter (struct parameters *params, const char *key, const char *value, unsigned int flags)
 Add request parameter.

Detailed Description

Request parameters.

Definition in file params.h.

Macro Definition Documentation

◆ PARAMETER_FORM

#define PARAMETER_FORM   0x0001

Request parameter is a form parameter.

Definition at line 41 of file params.h.

Referenced by add_parameter(), http_form_params(), and param_exec().

◆ PARAMETER_HEADER

#define PARAMETER_HEADER   0x0002

Request parameter is a header parameter.

Definition at line 44 of file params.h.

Referenced by add_parameter(), http_format_headers(), and param_exec().

◆ for_each_param

#define for_each_param ( param,
params )
Value:
list_for_each_entry ( (param), &(params)->entries, list )
struct hv_monitor_parameter param[4][32]
Parameters.
Definition hyperv.h:13
#define list_for_each_entry(pos, head, member)
Iterate over entries in a list.
Definition list.h:432

Iterate over all request parameters in a list.

Definition at line 84 of file params.h.

84#define for_each_param( param, params ) \
85 list_for_each_entry ( (param), &(params)->entries, list )

Referenced by http_form_params(), http_format_headers(), and uri_params_list_okx().

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )

◆ FILE_SECBOOT()

FILE_SECBOOT ( PERMITTED )

◆ __attribute__()

__attribute__ ( (always_inline) )
inlinestatic

Increment request parameter list reference count.

Claim ownership of request parameter list.

Decrement request parameter list reference count.

Parameters
paramsParameter list, or NULL
Return values
paramsParameter list as passed in
Parameters
paramsParameter list, or NULL
paramsParameter list
Return values
paramsParameter list

Definition at line 52 of file params.h.

53 {
54 ref_get ( &params->refcnt );
55 return params;
56}
#define ref_get(refcnt)
Get additional reference to object.
Definition refcnt.h:93

References ref_get, and parameters::refcnt.

◆ find_parameters()

struct parameters * find_parameters ( const char * name)
extern

Find request parameter list by name.

Parameters
nameParameter list name (may be NULL)
Return values
paramsParameter list, or NULL if not found

Definition at line 69 of file params.c.

69 {
70 struct parameters *params;
71
72 list_for_each_entry ( params, &parameters, list ) {
73 if ( ( params->name == name ) ||
74 ( strcmp ( params->name, name ) == 0 ) ) {
75 return params;
76 }
77 }
78 return NULL;
79}
#define NULL
NULL pointer (VOID *)
Definition Base.h:322
const char * name
Definition ath9k_hw.c:1986
int strcmp(const char *first, const char *second)
Compare strings.
Definition string.c:174
A request parameter list.
Definition params.h:17
struct list_head list
List of all parameter lists.
Definition params.h:21
const char * name
Name.
Definition params.h:23

References parameters::list, list_for_each_entry, name, parameters::name, NULL, and strcmp().

Referenced by create_parameters(), parse_parameters(), and parse_uri().

◆ create_parameters()

struct parameters * create_parameters ( const char * name)
extern

Create request parameter list.

Parameters
nameParameter list name (may be NULL)
Return values
paramsParameter list, or NULL on failure

Definition at line 87 of file params.c.

87 {
88 struct parameters *params;
89 size_t name_len;
90 char *name_copy;
91
92 /* Destroy any existing parameter list of this name */
93 params = find_parameters ( name );
94 if ( params ) {
95 claim_parameters ( params );
96 params_put ( params );
97 }
98
99 /* Allocate parameter list */
100 name_len = ( name ? ( strlen ( name ) + 1 /* NUL */ ) : 0 );
101 params = zalloc ( sizeof ( *params ) + name_len );
102 if ( ! params )
103 return NULL;
104 ref_init ( &params->refcnt, free_parameters );
105 name_copy = ( ( void * ) ( params + 1 ) );
106
107 /* Populate parameter list */
108 if ( name ) {
109 strcpy ( name_copy, name );
110 params->name = name_copy;
111 }
112 INIT_LIST_HEAD ( &params->entries );
113
114 /* Add to list of parameter lists */
115 list_add_tail ( &params->list, &parameters );
116
117 DBGC ( params, "PARAMS \"%s\" created\n", params->name );
118 return params;
119}
#define DBGC(...)
Definition compiler.h:505
#define list_add_tail(new, head)
Add a new entry to the tail of a list.
Definition list.h:94
#define INIT_LIST_HEAD(list)
Initialise a list head.
Definition list.h:46
void * zalloc(size_t size)
Allocate cleared memory.
Definition malloc.c:662
static void free_parameters(struct refcnt *refcnt)
Free request parameter list.
Definition params.c:45
struct parameters * find_parameters(const char *name)
Find request parameter list by name.
Definition params.c:69
#define ref_init(refcnt, free)
Initialise a reference counter.
Definition refcnt.h:65
char * strcpy(char *dest, const char *src)
Copy string.
Definition string.c:347
size_t strlen(const char *src)
Get length of string.
Definition string.c:244
struct list_head entries
Parameters.
Definition params.h:25
struct refcnt refcnt
Reference count.
Definition params.h:19

References DBGC, parameters::entries, find_parameters(), free_parameters(), INIT_LIST_HEAD, parameters::list, list_add_tail, name, parameters::name, NULL, ref_init, parameters::refcnt, strcpy(), strlen(), and zalloc().

Referenced by params_exec(), and uri_params_okx().

◆ add_parameter()

struct parameter * add_parameter ( struct parameters * params,
const char * key,
const char * value,
unsigned int flags )
extern

Add request parameter.

Parameters
paramsParameter list
keyParameter key
valueParameter value
flagsParameter flags
Return values
paramParameter, or NULL on failure

Definition at line 130 of file params.c.

132 {
133 struct parameter *param;
134 size_t key_len;
135 size_t value_len;
136 char *key_copy;
137 char *value_copy;
138
139 /* Allocate parameter */
140 key_len = ( strlen ( key ) + 1 /* NUL */ );
141 value_len = ( strlen ( value ) + 1 /* NUL */ );
142 param = zalloc ( sizeof ( *param ) + key_len + value_len );
143 if ( ! param )
144 return NULL;
145 key_copy = ( ( void * ) ( param + 1 ) );
146 value_copy = ( key_copy + key_len );
147
148 /* Populate parameter */
149 strcpy ( key_copy, key );
150 param->key = key_copy;
151 strcpy ( value_copy, value );
152 param->value = value_copy;
153 param->flags = flags;
154
155 /* Add to list of parameters */
156 list_add_tail ( &param->list, &params->entries );
157
158 DBGC ( params, "PARAMS \"%s\" added \"%s\"=\"%s\"%s%s\n",
159 params->name, param->key, param->value,
160 ( ( param->flags & PARAMETER_FORM ) ? " (form)" : "" ),
161 ( ( param->flags & PARAMETER_HEADER ) ? " (header)" : "" ) );
162 return param;
163}
union @162305117151260234136356364136041353210355154177 key
Sense key.
Definition scsi.h:3
pseudo_bit_t value[0x00020]
Definition arbel.h:2
uint8_t flags
Flags.
Definition ena.h:7
#define PARAMETER_HEADER
Request parameter is a header parameter.
Definition params.h:44
#define PARAMETER_FORM
Request parameter is a form parameter.
Definition params.h:41
A request parameter.
Definition params.h:29

References DBGC, parameters::entries, flags, key, list_add_tail, parameters::name, NULL, param, PARAMETER_FORM, PARAMETER_HEADER, strcpy(), strlen(), value, and zalloc().

Referenced by param_exec(), and uri_params_okx().