Date: Sun, 7 Jun 2009 11:48:03 GMT From: Gabor Pali <pgj@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 163705 for review Message-ID: <200906071148.n57Bm3RZ088093@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=163705 Change 163705 by pgj@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906071148.n57Bm3RZ088093>