2
0
mirror of https://github.com/xcat2/xNBA.git synced 2024-11-22 01:21:45 +00:00

[dhcp] Accept filename via DHCP option 67 as well as BOOTP filename field

Allow options with dedicated BOOTP fields to fall back to using the
equivalent DHCP option if the relevant field is empty.
This commit is contained in:
Michael Brown 2009-04-15 21:08:02 +01:00
parent cc4363acca
commit b363d19a16

View File

@ -155,6 +155,8 @@ int dhcppkt_store ( struct dhcp_packet *dhcppkt, unsigned int tag,
memset ( field_data, 0, field->len );
memcpy ( dhcp_packet_field ( dhcppkt->dhcphdr, field ),
data, len );
/* Erase any equivalent option from the options block */
dhcpopt_store ( &dhcppkt->options, tag, NULL, 0 );
return 0;
}
@ -181,14 +183,16 @@ int dhcppkt_fetch ( struct dhcp_packet *dhcppkt, unsigned int tag,
void *data, size_t len ) {
struct dhcp_packet_field *field;
void *field_data;
size_t field_len;
size_t field_len = 0;
/* If this is a special field, return it */
/* Identify special field, if any */
if ( ( field = find_dhcp_packet_field ( tag ) ) != NULL ) {
field_data = dhcp_packet_field ( dhcppkt->dhcphdr, field );
field_len = field->used_len ( field_data, field->len );
if ( ! field_len )
return -ENOENT;
}
/* Return special field, if it exists and is populated */
if ( field_len ) {
if ( len > field_len )
len = field_len;
memcpy ( data, field_data, len );