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