@@ -194,12 +194,12 @@ int dhcp_solicit_resp_cb(uint16_t instance_id, void *ptr, uint8_t msg_name, uin
194
194
int dhcp_client_get_global_address (int8_t interface , uint8_t dhcp_addr [static 16 ], uint8_t prefix [static 16 ], uint8_t mac64 [static 8 ], uint16_t link_type , dhcp_client_global_adress_cb * error_cb )
195
195
{
196
196
dhcpv6_solication_base_packet_s solPacket = {0 };
197
- dhcpv6_ia_non_temporal_address_s nonTemporalAddress = { 0 };
197
+
198
198
uint8_t * payload_ptr ;
199
199
uint32_t payload_len ;
200
200
dhcpv6_client_server_data_t * srv_data_ptr ;
201
201
202
- if (mac64 == NULL || prefix == NULL || dhcp_addr == NULL ) {
202
+ if (mac64 == NULL || dhcp_addr == NULL ) {
203
203
tr_error ("Invalid parameters" );
204
204
return -1 ;
205
205
}
@@ -210,7 +210,11 @@ int dhcp_client_get_global_address(int8_t interface, uint8_t dhcp_addr[static 16
210
210
return -1 ;
211
211
}
212
212
213
- payload_len = libdhcpv6_solication_message_length (link_type , true, 0 );
213
+ if (prefix ) {
214
+ payload_len = libdhcpv6_solication_message_length (link_type , true, 0 );
215
+ } else {
216
+ payload_len = libdhcpv6_solication_message_length (link_type , false, 0 );
217
+ }
214
218
payload_ptr = ns_dyn_mem_temporary_alloc (payload_len );
215
219
if (!payload_ptr ) {
216
220
libdhcvp6_nontemporalAddress_server_data_free (srv_data_ptr );
@@ -227,8 +231,14 @@ int dhcp_client_get_global_address(int8_t interface, uint8_t dhcp_addr[static 16
227
231
solPacket .messageType = DHCPV6_SOLICATION_TYPE ;
228
232
solPacket .transActionId = libdhcpv6_txid_get ();
229
233
/*Non Temporal Address */
230
- nonTemporalAddress .requestedAddress = prefix ;
231
- libdhcpv6_generic_nontemporal_address_message_write (payload_ptr , & solPacket , & nonTemporalAddress , NULL );
234
+
235
+ if (prefix ) {
236
+ dhcpv6_ia_non_temporal_address_s nonTemporalAddress = {0 };
237
+ nonTemporalAddress .requestedAddress = prefix ;
238
+ libdhcpv6_generic_nontemporal_address_message_write (payload_ptr , & solPacket , & nonTemporalAddress , NULL );
239
+ } else {
240
+ libdhcpv6_generic_nontemporal_address_message_write (payload_ptr , & solPacket , NULL , NULL );
241
+ }
232
242
233
243
// send solicit
234
244
srv_data_ptr -> transActionId = dhcp_service_send_req (dhcp_client .service_instance , 0 , srv_data_ptr , dhcp_addr , payload_ptr , payload_len , dhcp_solicit_resp_cb );
0 commit comments