<div dir="ltr"><br>> +<br>> + ret->leases.leases_len = nleases;<br>> +<br>> + for (i = 0; i < nleases; i++) {<br>> + virNetworkDHCPLeasesPtr lease = leases[i];<br>> + remote_network_dhcp_lease *lease_ret = &(ret->leases.leases_val[i]);<br>
> + lease_ret->expirytime = lease->expirytime;<br>> +<br>> + if ((VIR_STRDUP(lease_ret->mac, lease->mac) < 0) ||<br>> + (VIR_STRDUP(lease_ret->ipaddr, lease->ipaddr) < 0) ||<br>
> + (VIR_STRDUP(lease_ret->hostname, lease->hostname) < 0) ||<br>> + (VIR_STRDUP(lease_ret->clientid, lease->clientid) < 0))<br>> + goto error;<br>> + }<br>
> +<br><br>This above code is reported so many times in the patch, in <div>networkGetDHCPLeaseForMAC, remoteNetworkGetDHCPLeaseForMAC,<br></div><div>remoteNetworkGetDHCPLeases, remoteDispatchNetworkGetDHCPLeaseForMAC</div>
<div>and remoteSerializeNetworkDHCPLeases. <br></div><div><br></div><div>Hence I was wondering, whether it would be useful to introduce a helper</div><div>function, say virNetworkDHCPLeaseCopy, which would copy lease contents</div>
<div>from one lease pointer to another, something like:</div><div><div>/**</div><div> * virNetworkDHCPLeaseCopy:</div><div> * @dst: pointer to the destination lease object</div><div> * @src: pointer to the source lease object</div>
<div> *</div><div> * Copies contents of @src to @dst.</div><div> *</div><div> * Returns 0 on success, -1 otherwise.</div><div> */</div><div>int</div><div>virNetworkDHCPLeaseCopy(virNetworkDHCPLeasesPtr dst,</div><div> virNetworkDHCPLeasesPtr src)</div>
<div>{</div><div> dst->expirytime = src->expirytime;</div><div> if ((VIR_STRDUP(dst->macaddr, src->macaddr) < 0) ||</div><div> (VIR_STRDUP(dst->ipaddr, src->ipaddr) < 0) ||</div><div>
(VIR_STRDUP(dst->hostname, src->hostname) < 0) ||</div>
<div> (VIR_STRDUP(dst->clientid, src->clientid) < 0))</div><div> return -1;</div><div> return 0;</div><div>}</div></div><div><br></div><div>But the issue with this is that it wants the user to allocate memory</div>
<div>to the dst pointer (As the code in remote protocols does). </div><div>Also, will it be ever used by the users? If not, then should we be</div><div>introducing this function to some place in /src/util, so that</div><div>
code redundancy can be removed?</div><div><br></div><div><br><br>-- <br>Nehal J Wani<br><br><br></div></div>