ipv6: Remove BACKTRACK macro
authorMartin KaFai Lau <kafai@fb.com>
Mon, 20 Oct 2014 20:42:43 +0000 (13:42 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 24 Oct 2014 04:14:39 +0000 (00:14 -0400)
commita3c00e46efdb4009369971c97203ea67f7630fe4
tree98789f21ff6f3fd596ec49933fc69d5d0979be44
parent105970f6087ae240b00deaff85773ed9bf381145
ipv6: Remove BACKTRACK macro

It is the prep work to reduce the number of calls to fib6_lookup().

The BACKTRACK macro could be hard-to-read and error-prone due to
its side effects (mainly goto).

This patch is to:
1. Replace BACKTRACK macro with a function (fib6_backtrack) with the following
   return values:
   * If it is backtrack-able, returns next fn for retry.
   * If it reaches the root, returns NULL.
2. The caller needs to decide if a backtrack is needed (by testing
   rt == net->ipv6.ip6_null_entry).
3. Rename the goto labels in ip6_pol_route() to make the next few
   patches easier to read.

Cc: David Miller <davem@davemloft.net>
Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/route.c