From d446cd78e7bebc499dfacbc6a627cf49ae7f1d59 Mon Sep 17 00:00:00 2001 From: zhangzujian Date: Fri, 19 Jan 2024 12:35:52 +0000 Subject: [PATCH] debug Signed-off-by: zhangzujian --- lib/netdev.c | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/lib/netdev.c b/lib/netdev.c index b5e877c6a51..4efe50f7a5d 100644 --- a/lib/netdev.c +++ b/lib/netdev.c @@ -2222,6 +2222,9 @@ netdev_linux_get_addr_list(struct hmap **addr_list) struct linux_addr_list *all_addrs = NULL; struct linux_addr_list **p = &all_addrs; + struct ds s; + ds_init(&s); + ofpbuf_use_stub(&buf, reply_stub, sizeof reply_stub); while (nl_dump_next(&dump, &reply, &buf)) { bool parsed, ipv4 = false; @@ -2265,7 +2268,7 @@ netdev_linux_get_addr_list(struct hmap **addr_list) NLMSG_HDRLEN + sizeof(struct ifaddrmsg), policy6, attrs, ARRAY_SIZE(policy6)); } else { - VLOG_DBG_RL(&rl, + VLOG_INFO_RL(&rl, "received non AF_INET/AF_INET6" "rtnetlink address message"); goto out; @@ -2277,12 +2280,18 @@ netdev_linux_get_addr_list(struct hmap **addr_list) if (ipv4) { ovs_be32 addr = nl_attr_get_be32(attrs[IFA_ADDRESS]); ovs_be32 mask = be32_prefix_mask(msg->ifa_prefixlen); + ip_format_masked(addr, mask, &s); (*p)->addr = in6_addr_mapped_ipv4(addr); (*p)->mask = in6_addr_mapped_ipv4(mask); } else { (*p)->addr = nl_attr_get_in6_addr(attrs[IFA_ADDRESS]); (*p)->mask = ipv6_create_mask(msg->ifa_prefixlen); + ipv6_format_masked(&(*p)->addr, &(*p)->mask, &s); + } + if (msg->ifa_index != 2) { + VLOG_INFO("interface %d has ip %s", msg->ifa_index, ds_cstr_ro(&s)); } + ds_clear(&s); p = &((*p)->next); struct netdev_linux_addr_list *list; @@ -2297,7 +2306,7 @@ netdev_linux_get_addr_list(struct hmap **addr_list) list->count += 1; } } else { - VLOG_DBG_RL(&rl, "received unparseable rtnetlink address message"); + VLOG_INFO_RL(&rl, "received unparseable rtnetlink address message"); goto out; } } @@ -2332,11 +2341,33 @@ netdev_get_addrs_list_flush(void) ovs_mutex_lock(&if_addr_list_lock); if (if_addr_list) { struct netdev_linux_addr_list *list; + struct ds s1, s2; + ds_init(&s1); + ds_init(&s2); HMAP_FOR_EACH_SAFE (list, hmap_node, if_addr_list) { + if (IN6_IS_ADDR_V4MAPPED(&list->addr_array[0])) { + ip_format_masked(in6_addr_get_mapped_ipv4(&list->addr_array[0]), in6_addr_get_mapped_ipv4(&list->mask_array[0]), &s1); + } else { + ipv6_format_masked(&list->addr_array[0], &list->mask_array[0], &s1); + } + + if (IN6_IS_ADDR_V4MAPPED(&list->addr_array[list->count-1])) { + ip_format_masked(in6_addr_get_mapped_ipv4(&list->addr_array[list->count-1]), in6_addr_get_mapped_ipv4(&list->mask_array[list->count-1]), &s2); + } else { + ipv6_format_masked(&list->addr_array[list->count-1], &list->mask_array[list->count-1], &s2); + } + + VLOG_INFO("interface %d has %d ip(s): %s ... %s", + list->if_index, list->count, + ds_cstr_ro(&s1), ds_cstr_ro(&s2)); + ds_clear(&s1); + ds_clear(&s2); free(list->addr_array); free(list->mask_array); free(list); } + ds_destroy(&s1); + ds_destroy(&s2); hmap_destroy(if_addr_list); free(if_addr_list); if_addr_list = NULL;