UL_NL_SOFT_ERROR can be issued if kernel sends unpaired RTM_DELADDR. It
should not happen, but it can happen due to race condition. And it happened
in some kernel versions. It is not reason to exit the processing loop.
Signed-off-by: Stanislav Brabec <sbrabec@suse.cz>
nl->addr.ifname = ifname;
else
{
- /* There can be race, we do not return error here */
+ /* There can be race, we do not return error here.
+ * It also happens on RTM_DELADDR, as interface name could
+ * disappear from kernel tables before we process it. */
/* FIXME I18N: *"unknown"* is too generic. Use context. */
/* TRANSLATORS: unknown network interface, maximum 15
* (IF_NAMESIZE-1) bytes */
ul_debugobj(nl,
"process_msg() returned %d",
rc));
- return rc;
+ if (rc != UL_NL_SOFT_ERROR)
+ return rc;
}
}
if (!loop)