Partially merge r274887,r275334,r275577,r275578,r275586 to minimize
differences between projects/routing and HEAD.
This commit tries to keep code logic the same while changing underlying
code to use unified callbacks.
- Add llt_foreach_entry method to traverse all entries in given llt
- Add llt_dump_entry method to export particular lle entry in sysctl/rtsock format (code is not indented properly to minimize diff). Will be fixed in the next commits.
- Add llt_link_entry/llt_unlink_entry methods to link/unlink particular lle.
- Add llt_fill_sa_entry method to export address in the lle to sockaddr format.
- Add llt_hash method to use in generic hash table support code.
- Add llt_free_entry method which is used in llt_prefix_free code.
- Prepare for fine-grained locking by separating lle unlink and deletion in lltable_free() and lltable_prefix_free().
- Provide lltable_get<ifp|af>() functions to reduce direct 'struct lltable' access by external callers.
- Remove @llt agrument from lle_free() lle callback since it was unused.
- Temporarily add L3_CADDR() macro for 'const' sockaddr typecasting.
- Switch to per-af hashing code.
- Rename LLE_FREE_LOCKED() callback from in[6]_lltable_free() to in_[6]lltable_destroy() to avoid clashing with llt_free_entry() method. Update description from these functions.
- Use unified lltable_free_entry() function instead of per-af one.
Reviewed by: ae