iPXE
Data Structures | Macros | Functions
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. More...
 
#define PARAMETER_HEADER   0x0002
 Request parameter is a header parameter. More...
 
#define for_each_param(param, params)   list_for_each_entry ( (param), &(params)->entries, list )
 Iterate over all request parameters in a list. More...
 

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. More...
 
struct parametersfind_parameters (const char *name)
 Find request parameter list by name. More...
 
struct parameterscreate_parameters (const char *name)
 Create request parameter list. More...
 
struct parameteradd_parameter (struct parameters *params, const char *key, const char *value, unsigned int flags)
 Add request parameter. More...
 

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.

◆ PARAMETER_HEADER

#define PARAMETER_HEADER   0x0002

Request parameter is a header parameter.

Definition at line 44 of file params.h.

◆ for_each_param

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

Iterate over all request parameters in a list.

Definition at line 84 of file params.h.

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL  )

◆ FILE_SECBOOT()

FILE_SECBOOT ( PERMITTED  )

◆ __attribute__()

static __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)

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 }
const char * name
Definition: ath9k_hw.c:1986
A request parameter list.
Definition: params.h:17
#define list_for_each_entry(pos, head, member)
Iterate over entries in a list.
Definition: list.h:432
const char * name
Name.
Definition: params.h:23
struct list_head list
List of all parameter lists.
Definition: params.h:21
int strcmp(const char *first, const char *second)
Compare strings.
Definition: string.c:174
#define NULL
NULL pointer (VOID *)
Definition: Base.h:322

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

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

◆ create_parameters()

struct parameters* create_parameters ( const char *  name)

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 }
const char * name
Definition: ath9k_hw.c:1986
static void free_parameters(struct refcnt *refcnt)
Free request parameter list.
Definition: params.c:45
#define ref_init(refcnt, free)
Initialise a reference counter.
Definition: refcnt.h:65
A request parameter list.
Definition: params.h:17
#define DBGC(...)
Definition: compiler.h:505
struct parameters * find_parameters(const char *name)
Find request parameter list by name.
Definition: params.c:69
struct refcnt refcnt
Reference count.
Definition: params.h:19
#define list_add_tail(new, head)
Add a new entry to the tail of a list.
Definition: list.h:94
char * strcpy(char *dest, const char *src)
Copy string.
Definition: string.c:347
void * zalloc(size_t size)
Allocate cleared memory.
Definition: malloc.c:662
size_t strlen(const char *src)
Get length of string.
Definition: string.c:244
struct list_head entries
Parameters.
Definition: params.h:25
const char * name
Name.
Definition: params.h:23
struct list_head list
List of all parameter lists.
Definition: params.h:21
#define INIT_LIST_HEAD(list)
Initialise a list head.
Definition: list.h:46
#define NULL
NULL pointer (VOID *)
Definition: Base.h:322

References DBGC, parameters::entries, find_parameters(), free_parameters(), INIT_LIST_HEAD, parameters::list, list_add_tail, parameters::name, 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 
)

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 }
#define DBGC(...)
Definition: compiler.h:505
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
#define list_add_tail(new, head)
Add a new entry to the tail of a list.
Definition: list.h:94
char * strcpy(char *dest, const char *src)
Copy string.
Definition: string.c:347
uint8_t flags
Flags.
Definition: ena.h:18
void * zalloc(size_t size)
Allocate cleared memory.
Definition: malloc.c:662
struct hv_monitor_parameter param[4][32]
Parameters.
Definition: hyperv.h:24
size_t strlen(const char *src)
Get length of string.
Definition: string.c:244
struct list_head entries
Parameters.
Definition: params.h:25
const char * name
Name.
Definition: params.h:23
#define PARAMETER_FORM
Request parameter is a form parameter.
Definition: params.h:41
A request parameter.
Definition: params.h:29
#define NULL
NULL pointer (VOID *)
Definition: Base.h:322
#define PARAMETER_HEADER
Request parameter is a header parameter.
Definition: params.h:44
union @391 key
Sense key.
Definition: scsi.h:18

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().