From f7f321bb6233bd4c7cf95c9047985d79a33865d8 Mon Sep 17 00:00:00 2001 From: liangbotong <2285836142@qq.com> Date: Sat, 25 Feb 2023 15:28:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=88=A0=E5=9C=B0=E5=9D=80=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liangbotong --- src/linux/net/newip/af_ninet.c | 2 +- src/linux/net/newip/nip_addrconf.c | 14 ++++++++++++-- src/linux/net/newip/nip_fib.c | 12 +++++++++++- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/linux/net/newip/af_ninet.c b/src/linux/net/newip/af_ninet.c index ab53eb2..f35ea70 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 654f491..64d953e 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 8832f90..e00f5e6 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"); } } } -- Gitee