When duplicating struct ul_nl_addr, set address to ifa_local, if it is set
to ifa_local in the source. This fixes the address for PtP IPv4 network
interfaces and avoids UL_NL_SOFT_ERROR during address removal.
Signed-off-by: Stanislav Brabec <sbrabec@suse.cz>
return close(nl->fd);
}
-struct ul_nl_addr *ul_nl_addr_dup (struct ul_nl_addr *addr) {
+struct ul_nl_addr *ul_nl_addr_dup(struct ul_nl_addr *addr) {
struct ul_nl_addr *newaddr;
newaddr = calloc(1, sizeof(struct ul_nl_addr));
if (!newaddr)
memcpy(newaddr->ifa_local, addr->ifa_local,
addr->ifa_local_len);
}
- if (&(addr->ifa_address) == &(addr->ifa_local))
+ if (addr->address == addr->ifa_local)
newaddr->address = newaddr->ifa_local;
else
newaddr->address = newaddr->ifa_address;
return NULL;
}
-void ul_nl_addr_free (struct ul_nl_addr *addr) {
+void ul_nl_addr_free(struct ul_nl_addr *addr) {
if (addr) {
free(addr->ifa_address);
free(addr->ifa_local);