PERFORCE change 163705 for review
Gabor Pali
pgj at FreeBSD.org
Sun Jun 7 11:48:04 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=163705
Change 163705 by pgj at petymeg-current on 2009/06/07 11:47:56
Add and use netstat_stl_iterate() for iterating socket_type_list
information instead of using netstat_stl_first() and
netstat_stl_next() directly
Affected files ...
.. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.c#5 edit
.. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#7 edit
.. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#6 edit
.. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/unix.c#6 edit
Differences ...
==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.c#5 (text+ko) ====
==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#7 (text+ko) ====
@@ -25,10 +25,10 @@
/* "Socket" */
struct socket_type_list *netstat_stl_alloc(void);
-struct socket_type *netstat_stl_first(struct socket_type_list *list);
-struct socket_type *netstat_stl_next(struct socket_type *list);
struct socket_type *netstat_stl_find(struct socket_type_list *list,
unsigned short family, const char *name);
+void netstat_stl_iterate(struct socket_type_list *list,
+ void (*func)(struct socket_type *));
void netstat_stl_free(struct socket_type_list *list);
int netstat_stl_geterror(struct socket_type_list *list);
==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#6 (text+ko) ====
@@ -78,17 +78,16 @@
return (stlp);
}
-struct socket_type *
-netstat_stl_first(struct socket_type_list *list)
+void
+netstat_stl_iterate(struct socket_type_list *list,
+ void (*func)(struct socket_type *))
{
- return (LIST_FIRST(&list->stl_list));
-}
+ struct socket_type *stp;
-struct socket_type *
-netstat_stl_next(struct socket_type *stp)
-{
- return (LIST_NEXT(stp, st_list));
-}
+ /* XXX: Keep eye on disappering connections. */
+ LIST_FOREACH(stp, &list->stl_list, st_list)
+ func(stp);
+}
void
_netstat_stl_empty(struct socket_type_list *list)
@@ -120,6 +119,7 @@
{
struct socket_type *stp;
+ /* XXX: Keep eye on disappering connections. */
LIST_FOREACH(stp, &list->stl_list, st_list) {
if ((stp->st_family == family ||
family == PF_UNSPEC) &&
==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/unix.c#6 (text+ko) ====
@@ -72,7 +72,6 @@
unixpr(void *kvmd)
{
struct socket_type_list *stlp;
- struct socket_type *stp;
int error, st_flags;
kvm_t *kvm;
@@ -98,14 +97,12 @@
}
/*
- * It should be guaranteed that only active PCBs are
+ * Display received data by iterating the socket_type_list.
+ *
+ * It should be guaranteed (by libnetstat) that only active PCBs are
* returned.
*/
- for (stp = netstat_stl_first(stlp);
- stp != NULL;
- stp = netstat_stl_next(stp)) {
- unixdomainpr(stp);
- }
+ netstat_stl_iterate(stlp, unixdomainpr);
}
static void
More information about the p4-projects
mailing list