When initializing a new route, or deleting a route the ifa reference is
incremented in rtinit1. This is problematic for two reasons.
First, we increment the ifa reference twice when adding. This is because
we first increment the reference in rtinit1(), and then again in
rtrequest1_fib() when adding the route to the list. Second, during
deletion, we increment the ifa reference in rtinit1() the same as when
This results in two additional references on the ifaddr structure. The
end result is that the ifaddr structure for a new route will never be
free'd. This causes leaks for every address we add to an interface.
I'm not sure that simply removing this ifa_ref() is the best solution,
the reference counting code here is very tricky.
Signed-off-by: Jacob Keller <email@example.com>