diff --git a/src/linux/net/newip/af_ninet.c b/src/linux/net/newip/af_ninet.c index ab53eb219c7a2354bc980ac850d69ab600180c44..f35ea70f4adfe59119a9d1c9b50642ce0e7cccfe 100644 --- a/src/linux/net/newip/af_ninet.c +++ b/src/linux/net/newip/af_ninet.c @@ -186,7 +186,7 @@ out_rcu_unlock: number_sub: atomic_dec_if_positive(&g_nip_socket_number); num = atomic_read(&g_nip_socket_number); - nip_dbg("The final number of socket is: %d", num); + nip_dbg("[error] The final number of socket is: %d (after dec)", num); goto out; } diff --git a/src/linux/net/newip/nip_addrconf.c b/src/linux/net/newip/nip_addrconf.c index 654f4918c5922b61c0b4ff26f24d73682a767d30..64d953e2db386e5769b7b989ae76901f3c0d9c61 100644 --- a/src/linux/net/newip/nip_addrconf.c +++ b/src/linux/net/newip/nip_addrconf.c @@ -159,7 +159,12 @@ rcu_lock_out: rcu_read_unlock_bh(); if (likely(err == 0)) { - nip_dbg("success, idev->refcnt=%u", refcount_read(&idev->refcnt)); + char add_addr[NIP_ADDR_BIT_LEN_MAX] = {0}; + + nip_addr_to_str(addr, add_addr, NIP_ADDR_BIT_LEN_MAX); + nip_dbg("success, %s ifindex=%u (addr=%s, idev->refcnt=%u, ifa->refcnt=%u)", + idev->dev->name, idev->dev->ifindex, add_addr, + refcount_read(&idev->refcnt), refcount_read(&ifa->refcnt)); } else { kfree(ifa); nin_dev_put(idev); @@ -362,11 +367,16 @@ static int ninet_addr_del(struct net *net, int ifindex, u32 ifa_flags, read_lock_bh(&idev->lock); list_for_each_entry(ifp, &idev->addr_list, if_list) { if (nip_addr_eq(pfx, &ifp->addr)) { + char addr[NIP_ADDR_BIT_LEN_MAX] = {0}; + nin_ifa_hold(ifp); read_unlock_bh(&idev->lock); + nip_addr_to_str(&ifp->addr, addr, NIP_ADDR_BIT_LEN_MAX); nip_del_addr(ifp); - nip_dbg("nip_addr_del: success"); + nip_dbg("success, %s ifindex=%u (addr=%s, ifp->refcnt=%u, idev->refcnt=%u)", + idev->dev->name, ifindex, addr, refcount_read(&ifp->refcnt), + refcount_read(&idev->refcnt)); return 0; } } diff --git a/src/linux/net/newip/nip_fib.c b/src/linux/net/newip/nip_fib.c index 8832f908fd4f0debf0078e7f8fbe104d8c5501d7..e00f5e6edfeedb63bc5d263627984fcf9d7a1543 100644 --- a/src/linux/net/newip/nip_fib.c +++ b/src/linux/net/newip/nip_fib.c @@ -109,6 +109,8 @@ int nip_fib_add(struct hlist_head *nip_tb_head, struct nip_rt_info *rt) int err = 0; struct hlist_head *h; unsigned int hash; + char dst[NIP_ADDR_BIT_LEN_MAX] = {0}; + char gateway[NIP_ADDR_BIT_LEN_MAX] = {0}; hash = ninet_route_hash(&rt->rt_dst); h = &nip_tb_head[hash]; @@ -133,6 +135,11 @@ int nip_fib_add(struct hlist_head *nip_tb_head, struct nip_rt_info *rt) rcu_assign_pointer(rt->rt_node, new_node); atomic_inc(&rt->rt_ref); hlist_add_tail_rcu(&new_node->fib_hlist, h); + nip_addr_to_str(&rt->rt_dst, dst, NIP_ADDR_BIT_LEN_MAX); + nip_addr_to_str(&rt->gateway, gateway, NIP_ADDR_BIT_LEN_MAX); + nip_dbg("%s ifindex=%u (addr=%s, gateway=%s, rt_idev->refcnt=%u)", + rt->rt_idev->dev->name, rt->rt_idev->dev->ifindex, + dst, gateway, refcount_read(&rt->rt_idev->refcnt)); out: return err; @@ -183,6 +190,7 @@ static void nip_fib_clean_hash(struct net *net, struct hlist_head *nip_tb_head, void *arg) { int i; + int err; struct nip_fib_node *fn; struct hlist_node *tmp; struct nl_info info = { @@ -203,7 +211,9 @@ static void nip_fib_clean_hash(struct net *net, struct hlist_head *nip_tb_head, NIP_ADDR_BIT_LEN_MAX); nip_dbg("try to del rt_info, rt_dst=%s, gateway=%s", dst, gateway); - nip_fib_del(fn->nip_route_info, &info); + err = nip_fib_del(fn->nip_route_info, &info); + if (err) + nip_dbg("nip_fib_del failed"); } } }