<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>