2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
4 * Copyright (c) 2010 Bjoern A. Zeeb <bz@FreeBSD.org>
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 #include <sys/cdefs.h>
30 __FBSDID("$FreeBSD$");
34 #include <sys/param.h>
35 #include <sys/socket.h>
36 #include <sys/types.h>
43 #include <net/if_types.h>
44 #include <net/if_var.h>
48 struct ifindex_entry {
49 struct ifnet *ife_ifnet;
51 VNET_DECLARE(struct ifindex_entry *, ifindex_table);
52 #define V_ifindex_table VNET(ifindex_table)
55 if_show_ifnet(struct ifnet *ifp)
60 db_printf("%s:\n", ifp->if_xname);
61 #define IF_DB_PRINTF(f, e) db_printf(" %s = " f "\n", #e, ifp->e);
62 IF_DB_PRINTF("%s", if_dname);
63 IF_DB_PRINTF("%d", if_dunit);
64 IF_DB_PRINTF("%s", if_description);
65 IF_DB_PRINTF("%u", if_index);
66 IF_DB_PRINTF("%u", if_refcount);
67 IF_DB_PRINTF("%d", if_index_reserved);
68 IF_DB_PRINTF("%p", if_softc);
69 IF_DB_PRINTF("%p", if_l2com);
70 IF_DB_PRINTF("%p", if_llsoftc);
71 IF_DB_PRINTF("%d", if_amcount);
72 IF_DB_PRINTF("%p", if_addr);
73 IF_DB_PRINTF("%p", if_broadcastaddr);
74 IF_DB_PRINTF("%p", if_afdata);
75 IF_DB_PRINTF("%d", if_afdata_initialized);
76 IF_DB_PRINTF("%u", if_fib);
77 IF_DB_PRINTF("%p", if_vnet);
78 IF_DB_PRINTF("%p", if_home_vnet);
79 IF_DB_PRINTF("%p", if_vlantrunk);
80 IF_DB_PRINTF("%p", if_bpf);
81 IF_DB_PRINTF("%u", if_pcount);
82 IF_DB_PRINTF("%p", if_bridge);
83 IF_DB_PRINTF("%p", if_lagg);
84 IF_DB_PRINTF("%p", if_pf_kif);
85 IF_DB_PRINTF("%p", if_carp);
86 IF_DB_PRINTF("%p", if_label);
87 IF_DB_PRINTF("%p", if_netmap);
88 IF_DB_PRINTF("0x%08x", if_flags);
89 IF_DB_PRINTF("0x%08x", if_drv_flags);
90 IF_DB_PRINTF("0x%08x", if_capabilities);
91 IF_DB_PRINTF("0x%08x", if_capenable);
92 IF_DB_PRINTF("%p", if_snd.ifq_head);
93 IF_DB_PRINTF("%p", if_snd.ifq_tail);
94 IF_DB_PRINTF("%d", if_snd.ifq_len);
95 IF_DB_PRINTF("%d", if_snd.ifq_maxlen);
96 IF_DB_PRINTF("%p", if_snd.ifq_drv_head);
97 IF_DB_PRINTF("%p", if_snd.ifq_drv_tail);
98 IF_DB_PRINTF("%d", if_snd.ifq_drv_len);
99 IF_DB_PRINTF("%d", if_snd.ifq_drv_maxlen);
100 IF_DB_PRINTF("%d", if_snd.altq_type);
101 IF_DB_PRINTF("%x", if_snd.altq_flags);
105 DB_SHOW_COMMAND(ifnet, db_show_ifnet)
109 db_printf("usage: show ifnet <struct ifnet *>\n");
113 if_show_ifnet((struct ifnet *)addr);
116 DB_SHOW_ALL_COMMAND(ifnets, db_show_all_ifnets)
118 VNET_ITERATOR_DECL(vnet_iter);
122 VNET_FOREACH(vnet_iter) {
123 CURVNET_SET_QUIET(vnet_iter);
125 db_printf("vnet=%p\n", curvnet);
127 for (idx = 1; idx <= V_if_index; idx++) {
128 ifp = V_ifindex_table[idx].ife_ifnet;
131 db_printf( "%20s ifp=%p\n", ifp->if_xname, ifp);