Author: bz
Date: Mon Oct 25 08:30:19 2010
New Revision: 214333
URL: http://svn.freebsd.org/changeset/base/214333

Log:
  Factor out DDB commands from r204145, r204279 into if_debug.c for further
  enhancements (1).  Switch to a standard 2-clause BSD license for this (2).
  
  Unfortunately we have to un-static the ifindex_table for this but do not
  publicly export it.
  
  Suggested by: rwatson (1) a while back.
  Approved by:  thompsa (2) for the change from r204279.
  MFC after:    6 days

Added:
  head/sys/net/if_debug.c   (contents, props changed)
Modified:
  head/sys/conf/files
  head/sys/net/if.c

Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files Mon Oct 25 08:25:44 2010        (r214332)
+++ head/sys/conf/files Mon Oct 25 08:30:19 2010        (r214333)
@@ -2384,6 +2384,7 @@ net/if_atmsubr.c          optional atm
 net/if_bridge.c                        optional bridge inet | if_bridge inet
 net/if_clone.c                 standard
 net/if_dead.c                  standard
+net/if_debug.c                 optional ddb
 net/if_disc.c                  optional disc
 net/if_edsc.c                  optional edsc
 net/if_ef.c                    optional ef

Modified: head/sys/net/if.c
==============================================================================
--- head/sys/net/if.c   Mon Oct 25 08:25:44 2010        (r214332)
+++ head/sys/net/if.c   Mon Oct 25 08:30:19 2010        (r214333)
@@ -33,7 +33,6 @@
 #include "opt_compat.h"
 #include "opt_inet6.h"
 #include "opt_inet.h"
-#include "opt_ddb.h"
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -62,10 +61,6 @@
 #include <machine/stdarg.h>
 #include <vm/uma.h>
 
-#ifdef DDB
-#include <ddb/ddb.h>
-#endif
-
 #include <net/if.h>
 #include <net/if_arp.h>
 #include <net/if_clone.h>
@@ -191,7 +186,7 @@ VNET_DEFINE(struct ifgrouphead, ifg_head
 static VNET_DEFINE(int, if_indexlim) = 8;
 
 /* Table of ifnet by index. */
-static VNET_DEFINE(struct ifindex_entry *, ifindex_table);
+VNET_DEFINE(struct ifindex_entry *, ifindex_table);
 
 #define        V_if_indexlim           VNET(if_indexlim)
 #define        V_ifindex_table         VNET(ifindex_table)
@@ -3366,79 +3361,3 @@ if_deregister_com_alloc(u_char type)
        if_com_alloc[type] = NULL;
        if_com_free[type] = NULL;
 }
-
-#ifdef DDB
-static void
-if_show_ifnet(struct ifnet *ifp)
-{
-
-       if (ifp == NULL)
-               return;
-       db_printf("%s:\n", ifp->if_xname);
-#define        IF_DB_PRINTF(f, e)      db_printf("   %s = " f "\n", #e, 
ifp->e);
-       IF_DB_PRINTF("%s", if_dname);
-       IF_DB_PRINTF("%d", if_dunit);
-       IF_DB_PRINTF("%s", if_description);
-       IF_DB_PRINTF("%u", if_index);
-       IF_DB_PRINTF("%u", if_refcount);
-       IF_DB_PRINTF("%d", if_index_reserved);
-       IF_DB_PRINTF("%p", if_softc);
-       IF_DB_PRINTF("%p", if_l2com);
-       IF_DB_PRINTF("%p", if_vnet);
-       IF_DB_PRINTF("%p", if_home_vnet);
-       IF_DB_PRINTF("%p", if_addr);
-       IF_DB_PRINTF("%p", if_llsoftc);
-       IF_DB_PRINTF("%p", if_label);
-       IF_DB_PRINTF("%u", if_pcount);
-       IF_DB_PRINTF("0x%08x", if_flags);
-       IF_DB_PRINTF("0x%08x", if_drv_flags);
-       IF_DB_PRINTF("0x%08x", if_capabilities);
-       IF_DB_PRINTF("0x%08x", if_capenable);
-       IF_DB_PRINTF("%p", if_snd.ifq_head);
-       IF_DB_PRINTF("%p", if_snd.ifq_tail);
-       IF_DB_PRINTF("%d", if_snd.ifq_len);
-       IF_DB_PRINTF("%d", if_snd.ifq_maxlen);
-       IF_DB_PRINTF("%d", if_snd.ifq_drops);
-       IF_DB_PRINTF("%p", if_snd.ifq_drv_head);
-       IF_DB_PRINTF("%p", if_snd.ifq_drv_tail);
-       IF_DB_PRINTF("%d", if_snd.ifq_drv_len);
-       IF_DB_PRINTF("%d", if_snd.ifq_drv_maxlen);
-       IF_DB_PRINTF("%d", if_snd.altq_type);
-       IF_DB_PRINTF("%x", if_snd.altq_flags);
-#undef IF_DB_PRINTF
-}
-
-DB_SHOW_COMMAND(ifnet, db_show_ifnet)
-{
-
-       if (!have_addr) {
-               db_printf("usage: show ifnet <struct ifnet *>\n");
-               return;
-       }
-
-       if_show_ifnet((struct ifnet *)addr);
-}
-
-DB_SHOW_ALL_COMMAND(ifnets, db_show_all_ifnets)
-{
-       VNET_ITERATOR_DECL(vnet_iter);
-       struct ifnet *ifp;
-       u_short idx;
-
-       VNET_FOREACH(vnet_iter) {
-               CURVNET_SET_QUIET(vnet_iter);
-#ifdef VIMAGE
-               db_printf("vnet=%p\n", curvnet);
-#endif
-               for (idx = 1; idx <= V_if_index; idx++) {
-                       ifp = V_ifindex_table[idx].ife_ifnet;
-                       if (ifp == NULL)
-                               continue;
-                       db_printf( "%20s ifp=%p\n", ifp->if_xname, ifp);
-                       if (db_pager_quit)
-                               break;
-               }
-               CURVNET_RESTORE();
-       }
-}
-#endif

Added: head/sys/net/if_debug.c
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/sys/net/if_debug.c     Mon Oct 25 08:30:19 2010        (r214333)
@@ -0,0 +1,125 @@
+/*-
+ * Copyright (c) 2010 Bjoern A. Zeeb <b...@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include "opt_ddb.h"
+
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+
+#ifdef DDB
+#include <ddb/ddb.h>
+#endif
+
+#include <net/if.h>
+#include <net/if_types.h>
+#include <net/if_var.h>
+#include <net/vnet.h>
+
+#ifdef DDB
+struct ifindex_entry {
+       struct  ifnet *ife_ifnet;
+};
+VNET_DECLARE(struct ifindex_entry *, ifindex_table);
+#define        V_ifindex_table         VNET(ifindex_table)
+
+static void
+if_show_ifnet(struct ifnet *ifp)
+{
+
+       if (ifp == NULL)
+               return;
+       db_printf("%s:\n", ifp->if_xname);
+#define        IF_DB_PRINTF(f, e)      db_printf("   %s = " f "\n", #e, 
ifp->e);
+       IF_DB_PRINTF("%s", if_dname);
+       IF_DB_PRINTF("%d", if_dunit);
+       IF_DB_PRINTF("%s", if_description);
+       IF_DB_PRINTF("%u", if_index);
+       IF_DB_PRINTF("%u", if_refcount);
+       IF_DB_PRINTF("%d", if_index_reserved);
+       IF_DB_PRINTF("%p", if_softc);
+       IF_DB_PRINTF("%p", if_l2com);
+       IF_DB_PRINTF("%p", if_vnet);
+       IF_DB_PRINTF("%p", if_home_vnet);
+       IF_DB_PRINTF("%p", if_addr);
+       IF_DB_PRINTF("%p", if_llsoftc);
+       IF_DB_PRINTF("%p", if_label);
+       IF_DB_PRINTF("%u", if_pcount);
+       IF_DB_PRINTF("0x%08x", if_flags);
+       IF_DB_PRINTF("0x%08x", if_drv_flags);
+       IF_DB_PRINTF("0x%08x", if_capabilities);
+       IF_DB_PRINTF("0x%08x", if_capenable);
+       IF_DB_PRINTF("%p", if_snd.ifq_head);
+       IF_DB_PRINTF("%p", if_snd.ifq_tail);
+       IF_DB_PRINTF("%d", if_snd.ifq_len);
+       IF_DB_PRINTF("%d", if_snd.ifq_maxlen);
+       IF_DB_PRINTF("%d", if_snd.ifq_drops);
+       IF_DB_PRINTF("%p", if_snd.ifq_drv_head);
+       IF_DB_PRINTF("%p", if_snd.ifq_drv_tail);
+       IF_DB_PRINTF("%d", if_snd.ifq_drv_len);
+       IF_DB_PRINTF("%d", if_snd.ifq_drv_maxlen);
+       IF_DB_PRINTF("%d", if_snd.altq_type);
+       IF_DB_PRINTF("%x", if_snd.altq_flags);
+#undef IF_DB_PRINTF
+}
+
+DB_SHOW_COMMAND(ifnet, db_show_ifnet)
+{
+
+       if (!have_addr) {
+               db_printf("usage: show ifnet <struct ifnet *>\n");
+               return;
+       }
+
+       if_show_ifnet((struct ifnet *)addr);
+}
+
+DB_SHOW_ALL_COMMAND(ifnets, db_show_all_ifnets)
+{
+       VNET_ITERATOR_DECL(vnet_iter);
+       struct ifnet *ifp;
+       u_short idx;
+
+       VNET_FOREACH(vnet_iter) {
+               CURVNET_SET_QUIET(vnet_iter);
+#ifdef VIMAGE
+               db_printf("vnet=%p\n", curvnet);
+#endif
+               for (idx = 1; idx <= V_if_index; idx++) {
+                       ifp = V_ifindex_table[idx].ife_ifnet;
+                       if (ifp == NULL)
+                               continue;
+                       db_printf( "%20s ifp=%p\n", ifp->if_xname, ifp);
+                       if (db_pager_quit)
+                               break;
+               }
+               CURVNET_RESTORE();
+       }
+}
+#endif
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to