[dhcp] Allow use of custom reallocation functions for DHCP option blocks

Allow functions other than realloc() to be used to reallocate DHCP
option block data, and specify the reallocation function at the time
of calling dhcpopt_init().

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2011-01-10 23:58:11 +00:00
parent 310d46c1ed
commit 17b6a3c506
4 changed files with 74 additions and 62 deletions

View File

@@ -19,16 +19,23 @@ struct dhcp_options {
size_t used_len;
/** Option block allocated length */
size_t alloc_len;
/** Reallocate option block raw data
*
* @v options DHCP option block
* @v len New length
* @ret rc Return status code
*/
int ( * realloc ) ( struct dhcp_options *options, size_t len );
};
extern int dhcpopt_store ( struct dhcp_options *options, unsigned int tag,
const void *data, size_t len );
extern int dhcpopt_extensible_store ( struct dhcp_options *options,
unsigned int tag,
const void *data, size_t len );
extern int dhcpopt_fetch ( struct dhcp_options *options, unsigned int tag,
void *data, size_t len );
extern void dhcpopt_init ( struct dhcp_options *options,
void *data, size_t alloc_len );
void *data, size_t alloc_len,
int ( * realloc ) ( struct dhcp_options *options,
size_t len ) );
extern int dhcpopt_no_realloc ( struct dhcp_options *options, size_t len );
#endif /* _IPXE_DHCPOPTS_H */