From owner-p4-projects@FreeBSD.ORG Sun Jun 7 11:48:04 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 311961065670; Sun, 7 Jun 2009 11:48:04 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E5792106566B for ; Sun, 7 Jun 2009 11:48:03 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B95FC8FC08 for ; Sun, 7 Jun 2009 11:48:03 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n57Bm3ug088095 for ; Sun, 7 Jun 2009 11:48:03 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n57Bm3RZ088093 for perforce@freebsd.org; Sun, 7 Jun 2009 11:48:03 GMT (envelope-from pgj@FreeBSD.org) Date: Sun, 7 Jun 2009 11:48:03 GMT Message-Id: <200906071148.n57Bm3RZ088093@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 163705 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Jun 2009 11:48:04 -0000 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