summaryrefslogtreecommitdiffstats
path: root/src/net/dhcppkt.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/dhcppkt.c')
-rw-r--r--src/net/dhcppkt.c30
1 files changed, 8 insertions, 22 deletions
diff --git a/src/net/dhcppkt.c b/src/net/dhcppkt.c
index 0a11520f6..1cf99d8d4 100644
--- a/src/net/dhcppkt.c
+++ b/src/net/dhcppkt.c
@@ -92,20 +92,18 @@ find_dhcp_packet_field ( unsigned int tag ) {
}
return NULL;
}
-
+
/**
* Store value of DHCP packet setting
*
- * @v settings Settings block
+ * @v dhcppkt DHCP packet
* @v tag Setting tag number
* @v data Setting data, or NULL to clear setting
* @v len Length of setting data
* @ret rc Return status code
*/
-static int dhcppkt_store ( struct settings *settings, unsigned int tag,
- const void *data, size_t len ) {
- struct dhcp_packet *dhcppkt =
- container_of ( settings, struct dhcp_packet, settings );
+int dhcppkt_store ( struct dhcp_packet *dhcppkt, unsigned int tag,
+ const void *data, size_t len ) {
struct dhcp_packet_field *field;
int rc;
@@ -131,16 +129,14 @@ static int dhcppkt_store ( struct settings *settings, unsigned int tag,
/**
* Fetch value of DHCP packet setting
*
- * @v settings Settings block
+ * @v dhcppkt DHCP packet
* @v tag Setting tag number
* @v data Buffer to fill with setting data
* @v len Length of buffer
* @ret len Length of setting data, or negative error
*/
-static int dhcppkt_fetch ( struct settings *settings, unsigned int tag,
- void *data, size_t len ) {
- struct dhcp_packet *dhcppkt =
- container_of ( settings, struct dhcp_packet, settings );
+int dhcppkt_fetch ( struct dhcp_packet *dhcppkt, unsigned int tag,
+ void *data, size_t len ) {
struct dhcp_packet_field *field;
/* If this is a special field, return it */
@@ -156,31 +152,21 @@ static int dhcppkt_fetch ( struct settings *settings, unsigned int tag,
return dhcpopt_fetch ( &dhcppkt->options, tag, data, len );
}
-/** DHCP settings operations */
-static struct settings_operations dhcppkt_settings_operations = {
- .store = dhcppkt_store,
- .fetch = dhcppkt_fetch,
-};
-
/**
* Initialise prepopulated DHCP packet
*
* @v dhcppkt Uninitialised DHCP packet
- * @v refcnt Reference counter of containing object, or NULL
* @v data Memory for DHCP packet data
* @v max_len Length of memory for DHCP packet data
*
* The memory content must already be filled with valid DHCP options.
* A zeroed block counts as a block of valid DHCP options.
*/
-void dhcppkt_init ( struct dhcp_packet *dhcppkt, struct refcnt *refcnt,
- void *data, size_t len ) {
+void dhcppkt_init ( struct dhcp_packet *dhcppkt, void *data, size_t len ) {
dhcppkt->dhcphdr = data;
dhcppkt->max_len = len;
dhcpopt_init ( &dhcppkt->options, &dhcppkt->dhcphdr->options,
( len - offsetof ( struct dhcphdr, options ) ) );
dhcppkt->len = ( offsetof ( struct dhcphdr, options ) +
dhcppkt->options.len );
- settings_init ( &dhcppkt->settings, &dhcppkt_settings_operations,
- refcnt, "dhcp" );
}