[RFC] handle return codes of inetaddr_notifiers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In the current Linux 2.6 implementation of net/ipv4/devinet.c
the return codes of notifier_call_chain calls are never evaluated.
For example, in inet_insert_ifa all notifiers that are interested in
IP addresses being set on devices are informed of new IP
addresses. But there is no return code evaluation:

notifier_call_chain(&inetaddr_chain, NETDEV_UP, ifa);
return 0;

This behaviour is a problem for our qeth driver on s390.
We have to register each IP address that is set on a network
interface with our hardware. Otherwise, we do not get traffic
destined for this IP address.
There are cases when registering IP addresses with the
hardware fails. In those cases we want to return error codes
in our notifier function for event NETDEV_UP.
However, the stack does not care about error codes and thinks
that setting the IP address was successful. As a result, we have an
inconsistency: the IP address is registered in the stack but not with
our hardware. So, for a user everything looks ok, but no traffic for
this IP address is coming through.
A solution would be, that the stack evaluates error codes returned
by notifier_call_chain. In case of an error, the IP address should be
deleted from the device's ifa_list.

Besides, this mis-behaviour of ignoring error codes exists for all
kinds of net device events, for both IPv4 and IPv6. IMHO this should
be changed; why do we have return codes if nobody cares about
them???

Any comments?
If it is agreed on that we should look at return codes, I could
prepare a patch that fixes the problem.

-- 
Regards,
Thomas.
-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux