]> granicus.if.org Git - libnl/commitdiff
neigh: Remove check for AF_UNSPEC in rtnl_neigh_get()
authorThomas Graf <tgraf@suug.ch>
Fri, 1 Feb 2013 09:41:45 +0000 (10:41 +0100)
committerThomas Graf <tgraf@suug.ch>
Fri, 1 Feb 2013 09:45:01 +0000 (10:45 +0100)
This check was introduces to not accidently return AF_BRIDGE objects
to unaware API users as they do differ in structure. However, such
objects are only available if explicitely requests using the
NL_CACHE_AF_ITER flag or by using arg1 == AF_BRIDGE for the cache.

Therefore remove this check and allow rtnl_neigh_get() to be used to
fetch any neighbor object of a cache.

Reported-by: Maxime Bizon <mbizon@freebox.fr>
Signed-off-by: Thomas Graf <tgraf@suug.ch>
lib/route/neigh.c

index c0f80a26189d5e7b23844886439fc9c0d2f9f649..288bb857d16c0689fc98fca847440bf2d724e8c1 100644 (file)
@@ -532,6 +532,7 @@ int rtnl_neigh_alloc_cache(struct nl_sock *sock, struct nl_cache **result)
  * @arg cache          neighbour cache
  * @arg ifindex                interface index the neighbour is on
  * @arg dst            destination address of the neighbour
+ *
  * @return neighbour handle or NULL if no match was found.
  */
 struct rtnl_neigh * rtnl_neigh_get(struct nl_cache *cache, int ifindex,
@@ -540,8 +541,7 @@ struct rtnl_neigh * rtnl_neigh_get(struct nl_cache *cache, int ifindex,
        struct rtnl_neigh *neigh;
 
        nl_list_for_each_entry(neigh, &cache->c_items, ce_list) {
-               if (neigh->n_family == AF_UNSPEC &&
-                   neigh->n_ifindex == ifindex &&
+               if (neigh->n_ifindex == ifindex &&
                    !nl_addr_cmp(neigh->n_dst, dst)) {
                        nl_object_get((struct nl_object *) neigh);
                        return neigh;