kernel_optimize_test/net/ipv4
Pablo Neira Ayuso 1ce85fe402 netlink: change nlmsg_notify() return value logic
This patch changes the return value of nlmsg_notify() as follows:

If NETLINK_BROADCAST_ERROR is set by any of the listeners and
an error in the delivery happened, return the broadcast error;
else if there are no listeners apart from the socket that
requested a change with the echo flag, return the result of the
unicast notification. Thus, with this patch, the unicast
notification is handled in the same way of a broadcast listener
that has set the NETLINK_BROADCAST_ERROR socket flag.

This patch is useful in case that the caller of nlmsg_notify()
wants to know the result of the delivery of a netlink notification
(including the broadcast delivery) and take any action in case
that the delivery failed. For example, ctnetlink can drop packets
if the event delivery failed to provide reliable logging and
state-synchronization at the cost of dropping packets.

This patch also modifies the rtnetlink code to ignore the return
value of rtnl_notify() in all callers. The function rtnl_notify()
(before this patch) returned the error of the unicast notification
which makes rtnl_set_sk_err() reports errors to all listeners. This
is not of any help since the origin of the change (the socket that
requested the echoing) notices the ENOBUFS error if the notification
fails and should resync itself.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Acked-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-24 23:18:28 -08:00
..
netfilter net: replace uses of __constant_{endian} 2009-02-01 00:45:17 -08:00
af_inet.c gro: Optimise IPv4 packet reception 2009-02-08 20:22:19 -08:00
ah4.c
arp.c net: replace uses of __constant_{endian} 2009-02-01 00:45:17 -08:00
cipso_ipv4.c cipso: Fix documentation comment 2009-02-23 10:05:54 +11:00
datagram.c
devinet.c netlink: change nlmsg_notify() return value logic 2009-02-24 23:18:28 -08:00
esp4.c
fib_frontend.c ip: add loose reverse path filtering 2009-02-22 19:54:45 -08:00
fib_hash.c
fib_lookup.h
fib_rules.c
fib_semantics.c netlink: change nlmsg_notify() return value logic 2009-02-24 23:18:28 -08:00
fib_trie.c
icmp.c netns: Fix icmp shutdown. 2009-02-22 19:54:48 -08:00
igmp.c netns: igmp: make /proc/net/{igmp,mcfilter} per netns 2008-12-25 16:42:51 -08:00
inet_connection_sock.c net: move bsockets outside of read only beginning of struct inet_hashinfo 2009-02-01 12:31:33 -08:00
inet_diag.c
inet_fragment.c
inet_hashtables.c net: move bsockets outside of read only beginning of struct inet_hashinfo 2009-02-01 12:31:33 -08:00
inet_lro.c
inet_timewait_sock.c
inetpeer.c
ip_forward.c
ip_fragment.c
ip_gre.c gre: optimize hash lookup 2009-01-26 20:56:10 -08:00
ip_input.c
ip_options.c
ip_output.c ip: support for TX timestamps on UDP and RAW sockets 2009-02-15 22:43:38 -08:00
ip_sockglue.c
ipcomp.c
ipconfig.c net: replace uses of __constant_{endian} 2009-02-01 00:45:17 -08:00
ipip.c ip: ipip compile warning 2009-02-22 19:54:45 -08:00
ipmr.c ipmr: use goto to common label instead of opencoding 2009-02-06 23:46:51 -08:00
Kconfig Doc: Refer to ip-sysctl.txt for strict vs. loose rp_filter mode 2009-02-24 03:47:42 -08:00
Makefile
netfilter.c
proc.c net: replace commatas with semicolons 2009-02-16 00:08:56 -08:00
protocol.c
raw.c ip: support for TX timestamps on UDP and RAW sockets 2009-02-15 22:43:38 -08:00
route.c net: replace uses of __constant_{endian} 2009-02-01 00:45:17 -08:00
syncookies.c
sysctl_net_ipv4.c
tcp_bic.c
tcp_cong.c
tcp_cubic.c
tcp_diag.c
tcp_highspeed.c
tcp_htcp.c
tcp_hybla.c
tcp_illinois.c
tcp_input.c net_dma: convert to dma_find_channel 2009-01-06 11:38:15 -07:00
tcp_ipv4.c tcp: Like icmp use register_pernet_subsys 2009-02-22 19:54:49 -08:00
tcp_lp.c
tcp_minisocks.c
tcp_output.c Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ 2009-02-24 03:50:29 -08:00
tcp_probe.c
tcp_scalable.c
tcp_timer.c tcp: Stop scaring users with "treason uncloaked!" 2008-12-18 22:27:42 -08:00
tcp_vegas.c tcp: tcp_vegas cong avoid fix 2008-12-09 00:13:04 -08:00
tcp_vegas.h
tcp_veno.c
tcp_westwood.c
tcp_yeah.c
tcp.c gro: Optimise TCP packet reception 2009-02-08 20:22:19 -08:00
tunnel4.c
udp_impl.h
udp.c ip: support for TX timestamps on UDP and RAW sockets 2009-02-15 22:43:38 -08:00
udplite.c
xfrm4_input.c ipsec: Remove useless ret variable 2008-12-26 01:31:18 -08:00
xfrm4_mode_beet.c
xfrm4_mode_transport.c
xfrm4_mode_tunnel.c
xfrm4_output.c
xfrm4_policy.c net: replace uses of __constant_{endian} 2009-02-01 00:45:17 -08:00
xfrm4_state.c
xfrm4_tunnel.c