CVS commit: src/usr.bin/fstat
Module Name:src Committed By: simonb Date: Sun Jun 19 11:31:19 UTC 2022 Modified Files: src/usr.bin/fstat: Makefile fstat.c fstat.h Added Files: src/usr.bin/fstat: zfs.c zfs_znode.h Log Message: Add basic ZFS support to fstat(1). XXX: Use a local zfs_znode.h for a znode_t definition because the ZFS kernel code makes it too hard to include headers from userland. To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.27 src/usr.bin/fstat/Makefile cvs rdiff -u -r1.114 -r1.115 src/usr.bin/fstat/fstat.c cvs rdiff -u -r1.10 -r1.11 src/usr.bin/fstat/fstat.h cvs rdiff -u -r0 -r1.1 src/usr.bin/fstat/zfs.c src/usr.bin/fstat/zfs_znode.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/Makefile diff -u src/usr.bin/fstat/Makefile:1.26 src/usr.bin/fstat/Makefile:1.27 --- src/usr.bin/fstat/Makefile:1.26 Sun Oct 13 07:28:15 2019 +++ src/usr.bin/fstat/Makefile Sun Jun 19 11:31:19 2022 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.26 2019/10/13 07:28:15 mrg Exp $ +# $NetBSD: Makefile,v 1.27 2022/06/19 11:31:19 simonb Exp $ # from: @(#)Makefile 8.1 (Berkeley) 6/6/93 .include @@ -6,6 +6,9 @@ USE_FORT?= yes # setuid PROG= fstat SRCS= fstat.c isofs.c ntfs.c ptyfs.c tmpfs.c misc.c +.if (${MKZFS} != "no") +SRCS+= zfs.c +.endif DPADD= ${LIBKVM} LDADD= -lkvm BINGRP= kmem @@ -16,6 +19,9 @@ CPPFLAGS+= -I${NETBSDSRCDIR}/sys .if (${USE_INET6} != "no") CPPFLAGS+=-DINET6 .endif +.if (${MKZFS} != "no") +CPPFLAGS+=-DHAVE_ZFS +.endif CPPFLAGS+=-D_KMEMUSER LDADD+=-lutil Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.114 src/usr.bin/fstat/fstat.c:1.115 --- src/usr.bin/fstat/fstat.c:1.114 Wed Aug 26 23:08:29 2020 +++ src/usr.bin/fstat/fstat.c Sun Jun 19 11:31:19 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.114 2020/08/26 23:08:29 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.115 2022/06/19 11:31:19 simonb Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = "@(#)fstat.c 8.3 (Berkeley) 5/2/95"; #else -__RCSID("$NetBSD: fstat.c,v 1.114 2020/08/26 23:08:29 christos Exp $"); +__RCSID("$NetBSD: fstat.c,v 1.115 2022/06/19 11:31:19 simonb Exp $"); #endif #endif /* not lint */ @@ -611,6 +611,12 @@ vfilestat(struct vnode *vp, struct files if (!tmpfs_filestat(vp, fsp)) badtype = "error"; break; +#ifdef HAVE_ZFS + case VT_ZFS: + if (!zfs_filestat(vp, fsp)) +badtype = "error"; + break; +#endif case VT_NULL: case VT_OVERLAY: case VT_UMAP: Index: src/usr.bin/fstat/fstat.h diff -u src/usr.bin/fstat/fstat.h:1.10 src/usr.bin/fstat/fstat.h:1.11 --- src/usr.bin/fstat/fstat.h:1.10 Fri Sep 6 17:08:22 2019 +++ src/usr.bin/fstat/fstat.h Sun Jun 19 11:31:19 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.h,v 1.10 2019/09/06 17:08:22 christos Exp $ */ +/* $NetBSD: fstat.h,v 1.11 2022/06/19 11:31:19 simonb Exp $ */ /*- * Copyright (c) 1988, 1993 * The Regents of the University of California. All rights reserved. @@ -60,4 +60,5 @@ int isofs_filestat(struct vnode *, struc int ntfs_filestat(struct vnode *, struct filestat *); int ptyfs_filestat(struct vnode *, struct filestat *); int tmpfs_filestat(struct vnode *, struct filestat *); +int zfs_filestat(struct vnode *, struct filestat *); void oprint(struct file *, const char *); Added files: Index: src/usr.bin/fstat/zfs.c diff -u /dev/null src/usr.bin/fstat/zfs.c:1.1 --- /dev/null Sun Jun 19 11:31:19 2022 +++ src/usr.bin/fstat/zfs.c Sun Jun 19 11:31:19 2022 @@ -0,0 +1,75 @@ +/* $NetBSD: zfs.c,v 1.1 2022/06/19 11:31:19 simonb Exp $ */ + +/*- + * Copyright (c) 2022 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Simon Burge. + * + * 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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,
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: simonb Date: Sun Jun 19 11:31:19 UTC 2022 Modified Files: src/usr.bin/fstat: Makefile fstat.c fstat.h Added Files: src/usr.bin/fstat: zfs.c zfs_znode.h Log Message: Add basic ZFS support to fstat(1). XXX: Use a local zfs_znode.h for a znode_t definition because the ZFS kernel code makes it too hard to include headers from userland. To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.27 src/usr.bin/fstat/Makefile cvs rdiff -u -r1.114 -r1.115 src/usr.bin/fstat/fstat.c cvs rdiff -u -r1.10 -r1.11 src/usr.bin/fstat/fstat.h cvs rdiff -u -r0 -r1.1 src/usr.bin/fstat/zfs.c src/usr.bin/fstat/zfs_znode.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Wed Aug 26 23:08:29 UTC 2020 Modified Files: src/usr.bin/fstat: fstat.c Log Message: Provide a helpful error message if we don't have privs to read kernel addresses. To generate a diff of this commit: cvs rdiff -u -r1.113 -r1.114 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.113 src/usr.bin/fstat/fstat.c:1.114 --- src/usr.bin/fstat/fstat.c:1.113 Fri Sep 6 13:08:22 2019 +++ src/usr.bin/fstat/fstat.c Wed Aug 26 19:08:29 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.113 2019/09/06 17:08:22 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.114 2020/08/26 23:08:29 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = "@(#)fstat.c 8.3 (Berkeley) 5/2/95"; #else -__RCSID("$NetBSD: fstat.c,v 1.113 2019/09/06 17:08:22 christos Exp $"); +__RCSID("$NetBSD: fstat.c,v 1.114 2020/08/26 23:08:29 christos Exp $"); #endif #endif /* not lint */ @@ -181,6 +181,7 @@ static void vtrans(struct file *, struct static void ftrans(fdfile_t *, int); static void ptrans(struct file *, struct pipe *, int); static void kdriver_init(void); +static void check_privs(void); int main(int argc, char **argv) @@ -244,6 +245,8 @@ main(int argc, char **argv) usage(); } + check_privs(); + kdriver_init(); if (*(argv += optind)) { @@ -309,6 +312,23 @@ main(int argc, char **argv) return 0; } +static void +check_privs(void) +{ + int expaddr; + size_t expsize = sizeof(expaddr); + const char *expname = "kern.expose_address"; + + if (geteuid() == 0) + return; + + if (sysctlbyname(expname, , , NULL, 0) == -1) + err(EXIT_FAILURE, "Can't get sysctl `%s'", expname); + if (expaddr == 0) + errx(EXIT_FAILURE, "This program does not work without " + "sysctl `%s' being set", expname); +} + static const char *Uname, *Comm; pid_t Pid;
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Wed Aug 26 23:08:29 UTC 2020 Modified Files: src/usr.bin/fstat: fstat.c Log Message: Provide a helpful error message if we don't have privs to read kernel addresses. To generate a diff of this commit: cvs rdiff -u -r1.113 -r1.114 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat May 2 18:42:30 UTC 2020 Modified Files: src/usr.bin/fstat: misc.c Log Message: nuke random stuff that does not exist anymore. To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/misc.c diff -u src/usr.bin/fstat/misc.c:1.22 src/usr.bin/fstat/misc.c:1.23 --- src/usr.bin/fstat/misc.c:1.22 Fri Sep 6 13:08:22 2019 +++ src/usr.bin/fstat/misc.c Sat May 2 14:42:30 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.22 2019/09/06 17:08:22 christos Exp $ */ +/* $NetBSD: misc.c,v 1.23 2020/05/02 18:42:30 christos Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__RCSID("$NetBSD: misc.c,v 1.22 2019/09/06 17:08:22 christos Exp $"); +__RCSID("$NetBSD: misc.c,v 1.23 2020/05/02 18:42:30 christos Exp $"); #include #include @@ -207,35 +207,6 @@ p_mqueue(struct file *f) } static int -p_rnd(struct file *f) -{ - struct cprng_strong { - char cs_name[16]; - int cs_flags; - /*...*/ - } str; - struct rnd_ctx { - struct cprng_strong *rc_cprng; - bool rc_hard; - } ctx; - char buf[1024]; - - if (!KVM_READ(f->f_data, , sizeof(ctx))) { - dprintf("can't read rnd_ctx at %p for pid %d", f->f_data, Pid); - return 0; - } - if (!KVM_READ(ctx.rc_cprng, , sizeof(str))) { - dprintf("can't read cprng_strong at %p for pid %d", f->f_data,\ - Pid); - return 0; - } - snprintb(buf, sizeof(buf), CPRNG_FMT, str.cs_flags); - (void)printf("* rnd \"%s\" flags %s", str.cs_name, buf); - oprint(f, "\n"); - return 0; -} - -static int p_kqueue(struct file *f) { struct kqueue kq; @@ -281,7 +252,8 @@ pmisc(struct file *f, const char *name) case NL_KQUEUE: return p_kqueue(f); case NL_RND: - return p_rnd(f); + printf("* random %p", f->f_data); + break; case NL_SEM: return p_sem(f); case NL_TAP:
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat May 2 18:42:30 UTC 2020 Modified Files: src/usr.bin/fstat: misc.c Log Message: nuke random stuff that does not exist anymore. To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: wiz Date: Fri Sep 6 19:05:05 UTC 2019 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: Use \(em. To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.36 src/usr.bin/fstat/fstat.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: wiz Date: Fri Sep 6 19:05:05 UTC 2019 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: Use \(em. To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.36 src/usr.bin/fstat/fstat.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.1 diff -u src/usr.bin/fstat/fstat.1:1.35 src/usr.bin/fstat/fstat.1:1.36 --- src/usr.bin/fstat/fstat.1:1.35 Fri Sep 6 17:08:22 2019 +++ src/usr.bin/fstat/fstat.1 Fri Sep 6 19:05:04 2019 @@ -1,4 +1,4 @@ -.\" $NetBSD: fstat.1,v 1.35 2019/09/06 17:08:22 christos Exp $ +.\" $NetBSD: fstat.1,v 1.36 2019/09/06 19:05:04 wiz Exp $ .\" .\" Copyright (c) 1987, 1991, 1993 .\" The Regents of the University of California. All rights reserved. @@ -144,7 +144,7 @@ the file is not an inode, but rather a s .Tn FIFO , or there is an error. In this case the remainder of the line doesn't -correspond to the remaining headers -- the format of the line +correspond to the remaining headers \(em the format of the line is described later under .Sx SOCKETS . .It Li MOUNT
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Sep 6 17:08:22 UTC 2019 Modified Files: src/usr.bin/fstat: fstat.1 fstat.c fstat.h misc.c Log Message: Add -O to print offsets; align columns properly. To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.35 src/usr.bin/fstat/fstat.1 cvs rdiff -u -r1.112 -r1.113 src/usr.bin/fstat/fstat.c cvs rdiff -u -r1.9 -r1.10 src/usr.bin/fstat/fstat.h cvs rdiff -u -r1.21 -r1.22 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.1 diff -u src/usr.bin/fstat/fstat.1:1.34 src/usr.bin/fstat/fstat.1:1.35 --- src/usr.bin/fstat/fstat.1:1.34 Mon Jul 3 17:34:57 2017 +++ src/usr.bin/fstat/fstat.1 Fri Sep 6 13:08:22 2019 @@ -1,4 +1,4 @@ -.\" $NetBSD: fstat.1,v 1.34 2017/07/03 21:34:57 wiz Exp $ +.\" $NetBSD: fstat.1,v 1.35 2019/09/06 17:08:22 christos Exp $ .\" .\" Copyright (c) 1987, 1991, 1993 .\" The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\" .\" from: @(#)fstat.1 8.3 (Berkeley) 2/25/94 .\" -.Dd December 15, 2013 +.Dd September 6, 2019 .Dt FSTAT 1 .Os .Sh NAME @@ -37,7 +37,7 @@ .Nd display status of open files .Sh SYNOPSIS .Nm -.Op Fl Afnv +.Op Fl AfnOv .Op Fl M Ar core .Op Fl N Ar system .Op Fl p Ar pid @@ -54,7 +54,7 @@ If no options are specified, reports on all open files in the system. .Pp Options: -.Bl -tag -width Ds +.Bl -tag -width XX .It Fl A Add an output column with the address of the kernel object (vnode or file), that can be matched with @@ -72,12 +72,15 @@ resides, type Please see the .Sx BUGS section for issues with this option. -.It Fl M -Extract values associated with the name list from the specified core +.It Fl M Ar core +Extract values associated with the name list from the specified +.Ar core instead of the default .Pa /dev/kmem . -.It Fl N -Extract the name list from the specified system instead of the default +.It Fl N Ar system +Extract the name list from the specified +.Ar system +instead of the default .Pa /netbsd . .It Fl n Numerical format. @@ -88,10 +91,14 @@ device number that the special device re in .Pa /dev ; and print the mode of the file in octal instead of symbolic form. -.It Fl p -Report all files open by the specified process. -.It Fl u -Report all files open by the specified user. +.It Fl O +Report file offsets instead of sizes. +.It Fl p Ar process +Report all files open by the specified +.Ar process . +.It Fl u Ar user +Report all files open by the specified +.Ar user . .It Fl v Verbose mode. Print error messages upon failures to locate particular @@ -161,9 +168,11 @@ using a symbolic format (see .Xr strmode 3 ) ; otherwise, the mode is printed as an octal number. -.It Li SZ\&|DV +.It Li SZ\&|DV or OFFS If the file is not a character or block special file, prints the size of -the file in bytes. +the file in bytes (or the offset if the +.Fl O +is specified). Otherwise, if the .Fl n flag is not specified, prints Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.112 src/usr.bin/fstat/fstat.c:1.113 --- src/usr.bin/fstat/fstat.c:1.112 Sat Feb 2 22:19:29 2019 +++ src/usr.bin/fstat/fstat.c Fri Sep 6 13:08:22 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.112 2019/02/03 03:19:29 mrg Exp $ */ +/* $NetBSD: fstat.c,v 1.113 2019/09/06 17:08:22 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = "@(#)fstat.c 8.3 (Berkeley) 5/2/95"; #else -__RCSID("$NetBSD: fstat.c,v 1.112 2019/02/03 03:19:29 mrg Exp $"); +__RCSID("$NetBSD: fstat.c,v 1.113 2019/09/06 17:08:22 christos Exp $"); #endif #endif /* not lint */ @@ -134,6 +134,7 @@ static int fsflg, /* show files on same static int checkfile; /* true if restricting to particular files or filesystems */ static int nflg; /* (numerical) display f.s. and rdev as dev_t */ static int Aflg; /* prefix with address of file structure */ +static int Oflg; /* print offset instead of size */ int vflg; /* display errors in locating kernel data objects etc... */ static fdfile_t **ofiles; /* buffer of pointers to file structures */ @@ -171,12 +172,12 @@ static const char *inet6_addrstr(char *, uint16_t, bool); #endif static const char *at_addrstr(char *, size_t, const struct sockaddr_at *); -static void socktrans(struct socket *, int); +static void socktrans(struct file *, struct socket *, int); static void misctrans(struct file *, int); static int ufs_filestat(struct vnode *, struct filestat *); static void usage(void) __dead; static const char *vfilestat(struct vnode *, struct filestat *); -static void vtrans(struct vnode *, int, int, long); +static void vtrans(struct file *, struct vnode *, int, int, long); static void ftrans(fdfile_t *, int); static void ptrans(struct file *, struct pipe *, int); static void
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Sep 6 17:08:22 UTC 2019 Modified Files: src/usr.bin/fstat: fstat.1 fstat.c fstat.h misc.c Log Message: Add -O to print offsets; align columns properly. To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.35 src/usr.bin/fstat/fstat.1 cvs rdiff -u -r1.112 -r1.113 src/usr.bin/fstat/fstat.c cvs rdiff -u -r1.9 -r1.10 src/usr.bin/fstat/fstat.h cvs rdiff -u -r1.21 -r1.22 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: msaitoh Date: Tue Jun 26 10:00:25 UTC 2018 Modified Files: src/usr.bin/fstat: misc.c Log Message: Print BPF direction correctly. To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: msaitoh Date: Tue Jun 26 10:00:25 UTC 2018 Modified Files: src/usr.bin/fstat: misc.c Log Message: Print BPF direction correctly. To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/misc.c diff -u src/usr.bin/fstat/misc.c:1.19 src/usr.bin/fstat/misc.c:1.20 --- src/usr.bin/fstat/misc.c:1.19 Tue Jun 26 06:48:03 2018 +++ src/usr.bin/fstat/misc.c Tue Jun 26 10:00:25 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.19 2018/06/26 06:48:03 msaitoh Exp $ */ +/* $NetBSD: misc.c,v 1.20 2018/06/26 10:00:25 msaitoh Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__RCSID("$NetBSD: misc.c,v 1.19 2018/06/26 06:48:03 msaitoh Exp $"); +__RCSID("$NetBSD: misc.c,v 1.20 2018/06/26 10:00:25 msaitoh Exp $"); #include #include @@ -142,8 +142,12 @@ p_bpf(struct file *f) (void)printf(", promisc"); if (bpf.bd_immediate) (void)printf(", immed"); - if (bpf.bd_direction) - (void)printf(", direction"); + if (bpf.bd_direction == BPF_D_IN) + (void)printf(", in"); + else if (bpf.bd_direction == BPF_D_INOUT) + (void)printf(", inout"); + else if (bpf.bd_direction == BPF_D_OUT) + (void)printf(", out"); if (bpf.bd_jitcode != NULL) (void)printf(", jit"); if (bpf.bd_async)
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: nat Date: Mon Jun 4 01:42:49 UTC 2018 Modified Files: src/usr.bin/fstat: misc.c Log Message: Update fstat for audio(4) and pad(4) devices. XXX - pullup 8. Ok christos@. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/misc.c diff -u src/usr.bin/fstat/misc.c:1.17 src/usr.bin/fstat/misc.c:1.18 --- src/usr.bin/fstat/misc.c:1.17 Fri Dec 30 21:08:23 2016 +++ src/usr.bin/fstat/misc.c Mon Jun 4 01:42:49 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.17 2016/12/30 21:08:23 christos Exp $ */ +/* $NetBSD: misc.c,v 1.18 2018/06/04 01:42:49 nat Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__RCSID("$NetBSD: misc.c,v 1.17 2016/12/30 21:08:23 christos Exp $"); +__RCSID("$NetBSD: misc.c,v 1.18 2018/06/04 01:42:49 nat Exp $"); #include #include @@ -102,7 +102,11 @@ static struct nlist nl[] = { { .n_name = "vnops" }, #define NL_XENEVT 17 { .n_name = "xenevt_fileops" }, -#define NL_MAX 18 +#define NL_AUDIO 18 +{ .n_name = "audio_fileops" }, +#define NL_PAD 19 +{ .n_name = "pad_fileops" }, +#define NL_MAX 20 { .n_name = NULL } }; @@ -277,6 +281,12 @@ pmisc(struct file *f, const char *name) case NL_CRYPTO: printf("* crypto %p\n", f->f_data); return 0; + case NL_AUDIO: + printf("* audio %p\n", f->f_data); + return 0; + case NL_PAD: + printf("* pad %p\n", f->f_data); + return 0; case NL_MAX: printf("* %s ops=%p %p\n", name, f->f_ops, f->f_data); return 0;
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: nat Date: Mon Jun 4 01:42:49 UTC 2018 Modified Files: src/usr.bin/fstat: misc.c Log Message: Update fstat for audio(4) and pad(4) devices. XXX - pullup 8. Ok christos@. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Dec 30 21:08:23 UTC 2016 Modified Files: src/usr.bin/fstat: fstat.c misc.c Log Message: Print the interface for bpf. To generate a diff of this commit: cvs rdiff -u -r1.110 -r1.111 src/usr.bin/fstat/fstat.c cvs rdiff -u -r1.16 -r1.17 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Dec 30 21:08:23 UTC 2016 Modified Files: src/usr.bin/fstat: fstat.c misc.c Log Message: Print the interface for bpf. To generate a diff of this commit: cvs rdiff -u -r1.110 -r1.111 src/usr.bin/fstat/fstat.c cvs rdiff -u -r1.16 -r1.17 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.110 src/usr.bin/fstat/fstat.c:1.111 --- src/usr.bin/fstat/fstat.c:1.110 Tue Dec 22 18:35:21 2015 +++ src/usr.bin/fstat/fstat.c Fri Dec 30 16:08:23 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.110 2015/12/22 23:35:21 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.111 2016/12/30 21:08:23 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = "@(#)fstat.c 8.3 (Berkeley) 5/2/95"; #else -__RCSID("$NetBSD: fstat.c,v 1.110 2015/12/22 23:35:21 christos Exp $"); +__RCSID("$NetBSD: fstat.c,v 1.111 2016/12/30 21:08:23 christos Exp $"); #endif #endif /* not lint */ @@ -651,23 +651,23 @@ vtrans(struct vnode *vp, int i, int flag char buf[1024]; (void)snprintb(buf, sizeof(buf), VNODE_FLAGBITS, vn.v_iflag | vn.v_vflag | vn.v_uflag); - (void)printf(" flags %s\n", buf); + (void)printf(" flags %s\n", buf); return; } else if (badtype) { - (void)printf(" - - %10s-\n", badtype); + (void)printf(" - - %10s-\n", badtype); return; } if (nflg) - (void)printf(" %2llu,%-2llu", + (void)printf(" %2llu,%-2llu", (unsigned long long)major(fst.fsid), (unsigned long long)minor(fst.fsid)); else - (void)printf(" %-8s", getmnton(vn.v_mount)); + (void)printf(" %-8s", getmnton(vn.v_mount)); if (nflg) (void)snprintf(mode, sizeof mode, "%o", fst.mode); else strmode(fst.mode, mode); - (void)printf(" %7"PRIu64" %*s", fst.fileid, nflg ? 5 : 10, mode); + (void)printf(" %7"PRIu64" %*s", fst.fileid, nflg ? 5 : 10, mode); switch (vn.v_type) { case VBLK: case VCHR: { Index: src/usr.bin/fstat/misc.c diff -u src/usr.bin/fstat/misc.c:1.16 src/usr.bin/fstat/misc.c:1.17 --- src/usr.bin/fstat/misc.c:1.16 Sat Jan 23 11:12:03 2016 +++ src/usr.bin/fstat/misc.c Fri Dec 30 16:08:23 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.16 2016/01/23 16:12:03 christos Exp $ */ +/* $NetBSD: misc.c,v 1.17 2016/12/30 21:08:23 christos Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__RCSID("$NetBSD: misc.c,v 1.16 2016/01/23 16:12:03 christos Exp $"); +__RCSID("$NetBSD: misc.c,v 1.17 2016/12/30 21:08:23 christos Exp $"); #include #include @@ -113,12 +113,25 @@ static int p_bpf(struct file *f) { struct bpf_d bpf; + struct bpf_if bi; + struct ifnet ifn; + + strlcpy(ifn.if_xname, "???", sizeof(ifn.if_xname)); if (!KVM_READ(f->f_data, , sizeof(bpf))) { dprintf("can't read bpf at %p for pid %d", f->f_data, Pid); return 0; } - (void)printf("* bpf rec=%lu, dr=%lu, cap=%lu, pid=%lu", + if (bpf.bd_bif != NULL) { + if (!KVM_READ(bpf.bd_bif, , sizeof(bi))) + dprintf("can't read bpf interface at %p for pid %d", + bpf.bd_bif, Pid); + if (bi.bif_ifp != NULL) + if (!KVM_READ(bi.bif_ifp, , sizeof(ifn))) +dprintf("can't read net interfsace" +" at %p for pid %d", bi.bif_ifp, Pid); + } + (void)printf("* bpf@%s rec=%lu, dr=%lu, cap=%lu, pid=%lu", ifn.if_xname, bpf.bd_rcount, bpf.bd_dcount, bpf.bd_ccount, (unsigned long)bpf.bd_pid); if (bpf.bd_promisc)
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat Jan 23 16:12:03 UTC 2016 Modified Files: src/usr.bin/fstat: Makefile misc.c tmpfs.c Log Message: put _KMEMUSER in the Makefile To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/usr.bin/fstat/Makefile cvs rdiff -u -r1.15 -r1.16 src/usr.bin/fstat/misc.c cvs rdiff -u -r1.9 -r1.10 src/usr.bin/fstat/tmpfs.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Wed Dec 30 18:15:38 UTC 2015 Modified Files: src/usr.bin/fstat: misc.c Log Message: Add rnd ops. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Wed Dec 30 18:15:38 UTC 2015 Modified Files: src/usr.bin/fstat: misc.c Log Message: Add rnd ops. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/misc.c diff -u src/usr.bin/fstat/misc.c:1.14 src/usr.bin/fstat/misc.c:1.15 --- src/usr.bin/fstat/misc.c:1.14 Sun Aug 10 12:44:37 2014 +++ src/usr.bin/fstat/misc.c Wed Dec 30 13:15:38 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.14 2014/08/10 16:44:37 tls Exp $ */ +/* $NetBSD: misc.c,v 1.15 2015/12/30 18:15:38 christos Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__RCSID("$NetBSD: misc.c,v 1.14 2014/08/10 16:44:37 tls Exp $"); +__RCSID("$NetBSD: misc.c,v 1.15 2015/12/30 18:15:38 christos Exp $"); #define _KMEMUSER #include @@ -87,19 +87,21 @@ static struct nlist nl[] = { { .n_name = "pipeops" }, #define NL_PUTTER 9 { .n_name = "putter_fileops", }, -#define NL_SEM 10 +#define NL_RND 10 +{ .n_name = "rnd_fileops", }, +#define NL_SEM 11 { .n_name = "semops", }, -#define NL_SOCKET 11 +#define NL_SOCKET 12 { .n_name = "socketops" }, -#define NL_SVR4_NET 12 +#define NL_SVR4_NET 13 { .n_name = "svr4_netops" }, -#define NL_SVR4_32_NET 13 +#define NL_SVR4_32_NET 14 { .n_name = "svr4_32_netops" }, -#define NL_TAP 14 +#define NL_TAP 15 { .n_name = "tap_fileops", }, -#define NL_VNOPS 15 +#define NL_VNOPS 16 { .n_name = "vnops" }, -#define NL_XENEVT 16 +#define NL_XENEVT 17 { .n_name = "xenevt_fileops" }, #define NL_MAX 18 { .n_name = NULL } @@ -182,6 +184,34 @@ p_mqueue(struct file *f) } static int +p_rnd(struct file *f) +{ + struct cprng_strong { + char cs_name[16]; + int cs_flags; + /*...*/ + } str; + struct rnd_ctx { + struct cprng_strong *rc_cprng; + bool rc_hard; + } ctx; + char buf[1024]; + + if (!KVM_READ(f->f_data, , sizeof(ctx))) { + dprintf("can't read rnd_ctx at %p for pid %d", f->f_data, Pid); + return 0; + } + if (!KVM_READ(ctx.rc_cprng, , sizeof(str))) { + dprintf("can't read cprng_strong at %p for pid %d", f->f_data,\ + Pid); + return 0; + } + snprintb(buf, sizeof(buf), CPRNG_FMT, str.cs_flags); + (void)printf("* rnd \"%s\" flags %s\n", str.cs_name, buf); + return 0; +} + +static int p_kqueue(struct file *f) { struct kqueue kq; @@ -225,6 +255,8 @@ pmisc(struct file *f, const char *name) return p_mqueue(f); case NL_KQUEUE: return p_kqueue(f); + case NL_RND: + return p_rnd(f); case NL_SEM: return p_sem(f); case NL_TAP:
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Tue Dec 22 23:35:21 UTC 2015 Modified Files: src/usr.bin/fstat: fstat.c Log Message: print the tag symbolically if we don't support it. To generate a diff of this commit: cvs rdiff -u -r1.109 -r1.110 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Tue Dec 22 23:35:21 UTC 2015 Modified Files: src/usr.bin/fstat: fstat.c Log Message: print the tag symbolically if we don't support it. To generate a diff of this commit: cvs rdiff -u -r1.109 -r1.110 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.109 src/usr.bin/fstat/fstat.c:1.110 --- src/usr.bin/fstat/fstat.c:1.109 Sun Mar 8 01:46:51 2015 +++ src/usr.bin/fstat/fstat.c Tue Dec 22 18:35:21 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.109 2015/03/08 06:46:51 mlelstv Exp $ */ +/* $NetBSD: fstat.c,v 1.110 2015/12/22 23:35:21 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = "@(#)fstat.c 8.3 (Berkeley) 5/2/95"; #else -__RCSID("$NetBSD: fstat.c,v 1.109 2015/03/08 06:46:51 mlelstv Exp $"); +__RCSID("$NetBSD: fstat.c,v 1.110 2015/12/22 23:35:21 christos Exp $"); #endif #endif /* not lint */ @@ -532,6 +532,9 @@ ftrans(fdfile_t *fp, int i) } static const char dead[] = "dead"; +static const char *vnode_tag[] = { + VNODE_TAGS +}; static const char * vfilestat(struct vnode *vp, struct filestat *fsp) @@ -588,8 +591,9 @@ vfilestat(struct vnode *vp, struct files break; default: { static char unknown[10]; - (void)snprintf(unknown, sizeof unknown, - "?(%x)", vp->v_tag); + (void)snprintf(unknown, sizeof unknown, "%s(%#x)", + (size_t)vp->v_tag < __arraycount(vnode_tag) ? + vnode_tag[vp->v_tag] : "?", vp->v_tag); badtype = unknown; break; }
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: mlelstv Date: Sun Mar 8 06:46:51 UTC 2015 Modified Files: src/usr.bin/fstat: fstat.c Log Message: Resolve names of datagram services correctly. To generate a diff of this commit: cvs rdiff -u -r1.108 -r1.109 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: mlelstv Date: Sun Mar 8 06:46:51 UTC 2015 Modified Files: src/usr.bin/fstat: fstat.c Log Message: Resolve names of datagram services correctly. To generate a diff of this commit: cvs rdiff -u -r1.108 -r1.109 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.108 src/usr.bin/fstat/fstat.c:1.109 --- src/usr.bin/fstat/fstat.c:1.108 Fri Feb 14 20:43:34 2014 +++ src/usr.bin/fstat/fstat.c Sun Mar 8 06:46:51 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.108 2014/02/14 20:43:34 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.109 2015/03/08 06:46:51 mlelstv Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.108 2014/02/14 20:43:34 christos Exp $); +__RCSID($NetBSD: fstat.c,v 1.109 2015/03/08 06:46:51 mlelstv Exp $); #endif #endif /* not lint */ @@ -165,10 +165,10 @@ static const char *layer_filestat(stru static int msdosfs_filestat(struct vnode *, struct filestat *); static int nfs_filestat(struct vnode *, struct filestat *); static const char *inet_addrstr(char *, size_t, const struct in_addr *, -uint16_t); +uint16_t, bool); #ifdef INET6 static const char *inet6_addrstr(char *, size_t, const struct in6_addr *, -uint16_t); +uint16_t, bool); #endif static const char *at_addrstr(char *, size_t, const struct sockaddr_at *); static void socktrans(struct socket *, int); @@ -877,11 +877,14 @@ getmnton(struct mount *m) } static const char * -inet_addrstr(char *buf, size_t len, const struct in_addr *a, uint16_t p) +inet_addrstr(char *buf, size_t len, const struct in_addr *a, uint16_t p, bool isdg) { char addr[256], serv[256]; struct sockaddr_in sin; - const int niflags = nflg ? (NI_NUMERICHOST|NI_NUMERICSERV) : 0; + const int niflags = + (nflg ? (NI_NUMERICHOST|NI_NUMERICSERV) : 0) | + (isdg ? NI_DGRAM : 0); + (void)memset(sin, 0, sizeof(sin)); sin.sin_family = AF_INET; @@ -914,11 +917,13 @@ inet_addrstr(char *buf, size_t len, cons #ifdef INET6 static const char * -inet6_addrstr(char *buf, size_t len, const struct in6_addr *a, uint16_t p) +inet6_addrstr(char *buf, size_t len, const struct in6_addr *a, uint16_t p, bool isdg) { char addr[256], serv[256]; struct sockaddr_in6 sin6; - const int niflags = nflg ? (NI_NUMERICHOST|NI_NUMERICSERV) : 0; + const int niflags = + (nflg ? (NI_NUMERICHOST|NI_NUMERICSERV) : 0) | + (isdg ? NI_DGRAM : 0); (void)memset(sin6, 0, sizeof(sin6)); sin6.sin6_family = AF_INET6; @@ -1010,6 +1015,7 @@ socktrans(struct socket *sock, int i) int len; char dname[32]; char lbuf[512], fbuf[512], pbuf[24]; + bool isdgram; pbuf[0] = '\0'; /* fill in socket */ @@ -1054,12 +1060,14 @@ socktrans(struct socket *sock, int i) */ fbuf[0] = '\0'; lbuf[0] = '\0'; + isdgram = false; switch(dom.dom_family) { case AF_INET: getinetproto(pbuf, sizeof(pbuf), proto.pr_protocol); switch (proto.pr_protocol) { - case IPPROTO_TCP: case IPPROTO_UDP: + isdgram = true; + case IPPROTO_TCP: if (so.so_pcb == NULL) break; if (kvm_read(kd, (u_long)so.so_pcb, (char *)inpcb, @@ -1068,9 +1076,9 @@ socktrans(struct socket *sock, int i) goto bad; } inet_addrstr(lbuf, sizeof(lbuf), inpcb.inp_laddr, - ntohs(inpcb.inp_lport)); + ntohs(inpcb.inp_lport), isdgram); inet_addrstr(fbuf, sizeof(fbuf), inpcb.inp_faddr, - ntohs(inpcb.inp_fport)); + ntohs(inpcb.inp_fport), isdgram); break; default: break; @@ -1080,8 +1088,9 @@ socktrans(struct socket *sock, int i) case AF_INET6: getinetproto(pbuf, sizeof(pbuf), proto.pr_protocol); switch (proto.pr_protocol) { - case IPPROTO_TCP: case IPPROTO_UDP: + isdgram = true; + case IPPROTO_TCP: if (so.so_pcb == NULL) break; if (kvm_read(kd, (u_long)so.so_pcb, (char *)in6pcb, @@ -1090,9 +1099,9 @@ socktrans(struct socket *sock, int i) goto bad; } inet6_addrstr(lbuf, sizeof(lbuf), in6pcb.in6p_laddr, - ntohs(in6pcb.in6p_lport)); + ntohs(in6pcb.in6p_lport), isdgram); inet6_addrstr(fbuf, sizeof(fbuf), in6pcb.in6p_faddr, - ntohs(in6pcb.in6p_fport)); + ntohs(in6pcb.in6p_fport), isdgram); break; default: break;
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Feb 14 20:43:35 UTC 2014 Modified Files: src/usr.bin/fstat: fstat.c Log Message: fix protocol printing order. To generate a diff of this commit: cvs rdiff -u -r1.107 -r1.108 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.107 src/usr.bin/fstat/fstat.c:1.108 --- src/usr.bin/fstat/fstat.c:1.107 Thu Jan 16 22:28:01 2014 +++ src/usr.bin/fstat/fstat.c Fri Feb 14 15:43:34 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.107 2014/01/17 03:28:01 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.108 2014/02/14 20:43:34 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.107 2014/01/17 03:28:01 christos Exp $); +__RCSID($NetBSD: fstat.c,v 1.108 2014/02/14 20:43:34 christos Exp $); #endif #endif /* not lint */ @@ -158,8 +158,8 @@ static const char *const dtypes[] = { static void dofiles(struct kinfo_proc2 *); static int ext2fs_filestat(struct vnode *, struct filestat *); static int getfname(const char *); -static void getinetproto(int); -static void getatproto(int); +static void getinetproto(char *, size_t, int); +static void getatproto(char *, size_t, int); static char *getmnton(struct mount *); static const char *layer_filestat(struct vnode *, struct filestat *); static int msdosfs_filestat(struct vnode *, struct filestat *); @@ -1009,8 +1009,9 @@ socktrans(struct socket *sock, int i) struct ddpcb ddpcb; int len; char dname[32]; - char lbuf[512], fbuf[512]; + char lbuf[512], fbuf[512], pbuf[24]; + pbuf[0] = '\0'; /* fill in socket */ if (!KVM_READ(sock, so, sizeof(struct socket))) { dprintf(can't read sock at %p, sock); @@ -1055,7 +1056,7 @@ socktrans(struct socket *sock, int i) lbuf[0] = '\0'; switch(dom.dom_family) { case AF_INET: - getinetproto(proto.pr_protocol); + getinetproto(pbuf, sizeof(pbuf), proto.pr_protocol); switch (proto.pr_protocol) { case IPPROTO_TCP: case IPPROTO_UDP: @@ -1077,7 +1078,7 @@ socktrans(struct socket *sock, int i) break; #ifdef INET6 case AF_INET6: - getinetproto(proto.pr_protocol); + getinetproto(pbuf, sizeof(pbuf), proto.pr_protocol); switch (proto.pr_protocol) { case IPPROTO_TCP: case IPPROTO_UDP: @@ -1163,7 +1164,7 @@ again: } break; case AF_APPLETALK: - getatproto(proto.pr_protocol); + getatproto(pbuf, sizeof(pbuf), proto.pr_protocol); if (so.so_pcb) { if (kvm_read(kd, (u_long)so.so_pcb, (char *)ddpcb, sizeof(ddpcb)) != sizeof(ddpcb)){ @@ -1186,6 +1187,8 @@ again: else (void)printf(* %s %s, dname, stypename[so.so_type]); + if (pbuf[0]) + printf(%s, pbuf); if (fbuf[0] || lbuf[0]) printf( %s%s%s, fbuf, (fbuf[0] lbuf[0]) ? - : , lbuf); @@ -1236,7 +1239,7 @@ misctrans(struct file *file, int i) * print name of protocol number */ static void -getinetproto(int number) +getinetproto(char *buf, size_t len, int number) { const char *cp; @@ -1262,10 +1265,10 @@ getinetproto(int number) case IPPROTO_ICMPV6: cp =icmp6; break; default: - (void)printf( %d, number); + (void)snprintf(buf, len, %d, number); return; } - (void)printf( %s, cp); + (void)snprintf(buf, len, %s, cp); } /* @@ -1273,7 +1276,7 @@ getinetproto(int number) * print name of protocol number */ static void -getatproto(int number) +getatproto(char *buf, size_t len, int number) { const char *cp; @@ -1283,10 +1286,10 @@ getatproto(int number) case ATPROTO_AARP: cp =aarp; break; default: - (void)printf( %d, number); + (void)snprintf(buf, len, %d, number); return; } - (void)printf( %s, cp); + (void)snprintf(buf, len, %s, cp); } static int
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Feb 14 20:43:35 UTC 2014 Modified Files: src/usr.bin/fstat: fstat.c Log Message: fix protocol printing order. To generate a diff of this commit: cvs rdiff -u -r1.107 -r1.108 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Jan 17 03:28:01 UTC 2014 Modified Files: src/usr.bin/fstat: fstat.c Log Message: make fstat -f search for unix sockets. To generate a diff of this commit: cvs rdiff -u -r1.106 -r1.107 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.106 src/usr.bin/fstat/fstat.c:1.107 --- src/usr.bin/fstat/fstat.c:1.106 Sun Dec 15 13:56:59 2013 +++ src/usr.bin/fstat/fstat.c Thu Jan 16 22:28:01 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.106 2013/12/15 18:56:59 mlelstv Exp $ */ +/* $NetBSD: fstat.c,v 1.107 2014/01/17 03:28:01 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.106 2013/12/15 18:56:59 mlelstv Exp $); +__RCSID($NetBSD: fstat.c,v 1.107 2014/01/17 03:28:01 christos Exp $); #endif #endif /* not lint */ @@ -510,8 +510,7 @@ ftrans(fdfile_t *fp, int i) vtrans(file.f_data, i, file.f_flag, (long)fdfile.ff_file); break; case DTYPE_SOCKET: - if (checkfile == 0) - socktrans(file.f_data, i); + socktrans(file.f_data, i); break; case DTYPE_PIPE: if (checkfile == 0) @@ -598,37 +597,49 @@ vfilestat(struct vnode *vp, struct files return badtype; } -static void -vtrans(struct vnode *vp, int i, int flag, long addr) +static int +checkfs(struct vnode *vp, struct vnode *vn, struct filestat *fst, +const char **type, const char **fname) { - struct vnode vn; - struct filestat fst; - char mode[15], rw[3]; - const char *badtype, *filename; - - filename = NULL; - if (!KVM_READ(vp, vn, sizeof(struct vnode))) { + *fname = NULL; + if (!KVM_READ(vp, vn, sizeof(*vn))) { dprintf(can't read vnode at %p for pid %d, vp, Pid); - return; + return 0; } - badtype = vfilestat(vn, fst); + *type = vfilestat(vn, fst); if (checkfile) { int fsmatch = 0; DEVS *d; - - if (badtype badtype != dead) - return; - for (d = devs; d != NULL; d = d-next) - if (d-fsid == fst.fsid) { +#if 0 + if (*type *type != dead) + return 0; +#endif + for (d = devs; d != NULL; d = d-next) { + if (d-fsid == fst-fsid) { fsmatch = 1; -if (d-ino == fst.fileid) { - filename = d-name; +if (d-ino == fst-fileid) { + *fname = d-name; break; } } - if (fsmatch == 0 || (filename == NULL fsflg == 0)) - return; + } + if (fsmatch == 0 || (*fname == NULL fsflg == 0)) + return 0; } + return 1; +} + +static void +vtrans(struct vnode *vp, int i, int flag, long addr) +{ + struct vnode vn; + char mode[15], rw[3]; + const char *badtype, *filename; + struct filestat fst; + + if (!checkfs(vp, vn, fst, badtype, filename)) + return; + if (Aflg) (void)printf(%*lx , 2*(int)(sizeof(void*)), addr); PREFIX(i); @@ -999,7 +1010,6 @@ socktrans(struct socket *sock, int i) int len; char dname[32]; char lbuf[512], fbuf[512]; - PREFIX(i); /* fill in socket */ if (!KVM_READ(sock, so, sizeof(struct socket))) { @@ -1019,6 +1029,9 @@ socktrans(struct socket *sock, int i) goto bad; } + if (checkfile dom.dom_family != AF_LOCAL) + return; + if ((len = kvm_read(kd, (u_long)dom.dom_name, dname, sizeof(dname) - 1)) != sizeof(dname) -1) { dprintf(can't read domain name at %p, dom.dom_name); @@ -1027,11 +1040,6 @@ socktrans(struct socket *sock, int i) else dname[len] = '\0'; - if ((u_short)so.so_type STYPEMAX) - (void)printf(* %s ?%d, dname, so.so_type); - else - (void)printf(* %s %s, dname, stypename[so.so_type]); - /* * protocol specific formatting * @@ -1112,6 +1120,16 @@ again: dprintf(can't read unpcb at %p, so.so_pcb); goto bad; } + if (checkfile) { +struct vnode vn; +struct filestat fst; +const char *badtype, *filename; +if (unpcb.unp_vnode == NULL) + return; +if (!checkfs(unpcb.unp_vnode, vn, fst, +badtype, filename)) + return; + } if (unpcb.unp_addr) { struct sockaddr_un *sun = @@ -1162,6 +1180,12 @@ again: (uintmax_t)(uintptr_t)sock); break; } + PREFIX(i); + if ((u_short)so.so_type STYPEMAX) + (void)printf(* %s ?%d, dname, so.so_type); + else + (void)printf(* %s %s, dname, stypename[so.so_type]); + if (fbuf[0] || lbuf[0]) printf( %s%s%s, fbuf, (fbuf[0] lbuf[0]) ? - : , lbuf);
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Jan 17 03:28:01 UTC 2014 Modified Files: src/usr.bin/fstat: fstat.c Log Message: make fstat -f search for unix sockets. To generate a diff of this commit: cvs rdiff -u -r1.106 -r1.107 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: mlelstv Date: Sun Dec 15 08:16:24 UTC 2013 Modified Files: src/usr.bin/fstat: fstat.1 fstat.c Log Message: New -A option. Add an output column with the address of the kernel object (vnode or file) that can be matched with prstat(8) output. To generate a diff of this commit: cvs rdiff -u -r1.31 -r1.32 src/usr.bin/fstat/fstat.1 cvs rdiff -u -r1.103 -r1.104 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.1 diff -u src/usr.bin/fstat/fstat.1:1.31 src/usr.bin/fstat/fstat.1:1.32 --- src/usr.bin/fstat/fstat.1:1.31 Wed Oct 3 19:35:08 2012 +++ src/usr.bin/fstat/fstat.1 Sun Dec 15 08:16:24 2013 @@ -1,4 +1,4 @@ -.\ $NetBSD: fstat.1,v 1.31 2012/10/03 19:35:08 wiz Exp $ +.\ $NetBSD: fstat.1,v 1.32 2013/12/15 08:16:24 mlelstv Exp $ .\ .\ Copyright (c) 1987, 1991, 1993 .\ The Regents of the University of California. All rights reserved. @@ -37,7 +37,7 @@ .Nd display status of open files .Sh SYNOPSIS .Nm -.Op Fl fnv +.Op Fl fnAv .Op Fl M Ar core .Op Fl N Ar system .Op Fl p Ar pid @@ -87,6 +87,11 @@ and print the mode of the file in octal Report all files open by the specified process. .It Fl u Report all files open by the specified user. +.It Fl A +Add an output column with the address of the kernel object (vnode or file), +that can be matched with +.Xr pstat 8 +output. .It Fl v Verbose mode. Print error messages upon failures to locate particular Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.103 src/usr.bin/fstat/fstat.c:1.104 --- src/usr.bin/fstat/fstat.c:1.103 Sat Oct 19 15:56:05 2013 +++ src/usr.bin/fstat/fstat.c Sun Dec 15 08:16:24 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.103 2013/10/19 15:56:05 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.104 2013/12/15 08:16:24 mlelstv Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.103 2013/10/19 15:56:05 christos Exp $); +__RCSID($NetBSD: fstat.c,v 1.104 2013/12/15 08:16:24 mlelstv Exp $); #endif #endif /* not lint */ @@ -133,6 +133,7 @@ static int fsflg, /* show files on same uflg; /* show files open by a particular (effective) user */ static int checkfile; /* true if restricting to particular files or filesystems */ static int nflg; /* (numerical) display f.s. and rdev as dev_t */ +static int Aflg; /* prefix with address of file structure */ int vflg; /* display errors in locating kernel data objects etc... */ static fdfile_t **ofiles; /* buffer of pointers to file structures */ @@ -175,7 +176,7 @@ static void misctrans(struct file *, int static int ufs_filestat(struct vnode *, struct filestat *); static void usage(void) __dead; static const char *vfilestat(struct vnode *, struct filestat *); -static void vtrans(struct vnode *, int, int); +static void vtrans(struct vnode *, int, int, long); static void ftrans(fdfile_t *, int); static void ptrans(struct file *, struct pipe *, int); static void kdriver_init(void); @@ -195,7 +196,7 @@ main(int argc, char **argv) arg = 0; what = KERN_PROC_ALL; nlistf = memf = NULL; - while ((ch = getopt(argc, argv, fnp:u:vN:M:)) != -1) + while ((ch = getopt(argc, argv, fnAp:u:vN:M:)) != -1) switch((char)ch) { case 'f': fsflg = 1; @@ -209,6 +210,9 @@ main(int argc, char **argv) case 'n': nflg = 1; break; + case 'A': + Aflg = 1; + break; case 'p': if (pflg++) usage(); @@ -277,6 +281,8 @@ main(int argc, char **argv) if ((p = kvm_getproc2(kd, what, arg, sizeof *p, cnt)) == NULL) { errx(1, %s, kvm_geterr(kd)); } + if (Aflg) + (void)printf(%-*s , 2*(int)(sizeof(void*)), ADDR); if (nflg) (void)printf(%s, USER CMD PID FD DEV INUM MODE SZ|DV R/W); @@ -444,11 +450,11 @@ dofiles(struct kinfo_proc2 *p) * root directory vnode, if one */ if (cwdi.cwdi_rdir) - vtrans(cwdi.cwdi_rdir, RDIR, FREAD); + vtrans(cwdi.cwdi_rdir, RDIR, FREAD, (long)cwdi.cwdi_rdir); /* * current working directory vnode */ - vtrans(cwdi.cwdi_cdir, CDIR, FREAD); + vtrans(cwdi.cwdi_cdir, CDIR, FREAD, (long)cwdi.cwdi_cdir); #if 0 /* * Disable for now, since p-p_tracep appears to point to a ktr_desc * @@ -496,9 +502,12 @@ ftrans(fdfile_t *fp, int i) i, fdfile.ff_file, Pid); return; } + if (Aflg file.f_type != DTYPE_VNODE) + (void)printf(%*lx , + 2*(int)(sizeof(void*)), (long)fdfile.ff_file); switch (file.f_type) { case DTYPE_VNODE: - vtrans(file.f_data, i, file.f_flag); + vtrans(file.f_data, i, file.f_flag, (long)fdfile.ff_file); break; case DTYPE_SOCKET: if (checkfile == 0) @@ -590,7 +599,7 @@ vfilestat(struct vnode *vp, struct files } static void -vtrans(struct vnode *vp, int i, int flag) +vtrans(struct vnode *vp, int i, int flag, long addr)
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: wiz Date: Sun Dec 15 09:20:48 UTC 2013 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: Sort SYNOPSIS and option descriptions. Bump date for previous. To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 src/usr.bin/fstat/fstat.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.1 diff -u src/usr.bin/fstat/fstat.1:1.32 src/usr.bin/fstat/fstat.1:1.33 --- src/usr.bin/fstat/fstat.1:1.32 Sun Dec 15 08:16:24 2013 +++ src/usr.bin/fstat/fstat.1 Sun Dec 15 09:20:48 2013 @@ -1,4 +1,4 @@ -.\ $NetBSD: fstat.1,v 1.32 2013/12/15 08:16:24 mlelstv Exp $ +.\ $NetBSD: fstat.1,v 1.33 2013/12/15 09:20:48 wiz Exp $ .\ .\ Copyright (c) 1987, 1991, 1993 .\ The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\ .\ from: @(#)fstat.1 8.3 (Berkeley) 2/25/94 .\ -.Dd September 5, 2011 +.Dd December 15, 2013 .Dt FSTAT 1 .Os .Sh NAME @@ -37,7 +37,7 @@ .Nd display status of open files .Sh SYNOPSIS .Nm -.Op Fl fnAv +.Op Fl Afnv .Op Fl M Ar core .Op Fl N Ar system .Op Fl p Ar pid @@ -55,6 +55,11 @@ reports on all open files in the system. .Pp Options: .Bl -tag -width Ds +.It Fl A +Add an output column with the address of the kernel object (vnode or file), +that can be matched with +.Xr pstat 8 +output. .It Fl f Restrict examination to files open in the same file systems as the named file arguments, or to the file system containing the @@ -87,11 +92,6 @@ and print the mode of the file in octal Report all files open by the specified process. .It Fl u Report all files open by the specified user. -.It Fl A -Add an output column with the address of the kernel object (vnode or file), -that can be matched with -.Xr pstat 8 -output. .It Fl v Verbose mode. Print error messages upon failures to locate particular
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: wiz Date: Sun Dec 15 09:21:03 UTC 2013 Modified Files: src/usr.bin/fstat: fstat.c Log Message: sync usage with man page To generate a diff of this commit: cvs rdiff -u -r1.104 -r1.105 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.104 src/usr.bin/fstat/fstat.c:1.105 --- src/usr.bin/fstat/fstat.c:1.104 Sun Dec 15 08:16:24 2013 +++ src/usr.bin/fstat/fstat.c Sun Dec 15 09:21:03 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.104 2013/12/15 08:16:24 mlelstv Exp $ */ +/* $NetBSD: fstat.c,v 1.105 2013/12/15 09:21:03 wiz Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.104 2013/12/15 08:16:24 mlelstv Exp $); +__RCSID($NetBSD: fstat.c,v 1.105 2013/12/15 09:21:03 wiz Exp $); #endif #endif /* not lint */ @@ -1325,7 +1325,7 @@ getftype(enum vtype v_type) static void usage(void) { - (void)fprintf(stderr, Usage: %s [-Afnv] [-p pid] [-u user] - [-N system] [-M core] [file ...]\n, getprogname()); + (void)fprintf(stderr, Usage: %s [-Afnv] [-M core] [-N system] + [-p pid] [-u user] [file ...]\n, getprogname()); exit(1); }
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: mlelstv Date: Sun Dec 15 18:56:59 UTC 2013 Modified Files: src/usr.bin/fstat: fstat.c Log Message: Fix output for -A -f ... To generate a diff of this commit: cvs rdiff -u -r1.105 -r1.106 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.105 src/usr.bin/fstat/fstat.c:1.106 --- src/usr.bin/fstat/fstat.c:1.105 Sun Dec 15 09:21:03 2013 +++ src/usr.bin/fstat/fstat.c Sun Dec 15 18:56:59 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.105 2013/12/15 09:21:03 wiz Exp $ */ +/* $NetBSD: fstat.c,v 1.106 2013/12/15 18:56:59 mlelstv Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.105 2013/12/15 09:21:03 wiz Exp $); +__RCSID($NetBSD: fstat.c,v 1.106 2013/12/15 18:56:59 mlelstv Exp $); #endif #endif /* not lint */ @@ -502,7 +502,7 @@ ftrans(fdfile_t *fp, int i) i, fdfile.ff_file, Pid); return; } - if (Aflg file.f_type != DTYPE_VNODE) + if (Aflg file.f_type != DTYPE_VNODE checkfile == 0) (void)printf(%*lx , 2*(int)(sizeof(void*)), (long)fdfile.ff_file); switch (file.f_type) {
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: mlelstv Date: Sun Dec 15 08:16:24 UTC 2013 Modified Files: src/usr.bin/fstat: fstat.1 fstat.c Log Message: New -A option. Add an output column with the address of the kernel object (vnode or file) that can be matched with prstat(8) output. To generate a diff of this commit: cvs rdiff -u -r1.31 -r1.32 src/usr.bin/fstat/fstat.1 cvs rdiff -u -r1.103 -r1.104 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: wiz Date: Sun Dec 15 09:20:48 UTC 2013 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: Sort SYNOPSIS and option descriptions. Bump date for previous. To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 src/usr.bin/fstat/fstat.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: wiz Date: Sun Dec 15 09:21:03 UTC 2013 Modified Files: src/usr.bin/fstat: fstat.c Log Message: sync usage with man page To generate a diff of this commit: cvs rdiff -u -r1.104 -r1.105 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: mlelstv Date: Sun Dec 15 18:56:59 UTC 2013 Modified Files: src/usr.bin/fstat: fstat.c Log Message: Fix output for -A -f ... To generate a diff of this commit: cvs rdiff -u -r1.105 -r1.106 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Oct 18 20:18:42 UTC 2013 Modified Files: src/usr.bin/fstat: fstat.c Log Message: avoid pointer gymnastics To generate a diff of this commit: cvs rdiff -u -r1.100 -r1.101 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.100 src/usr.bin/fstat/fstat.c:1.101 --- src/usr.bin/fstat/fstat.c:1.100 Sat Nov 24 19:36:23 2012 +++ src/usr.bin/fstat/fstat.c Fri Oct 18 16:18:42 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.100 2012/11/25 00:36:23 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.101 2013/10/18 20:18:42 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.100 2012/11/25 00:36:23 christos Exp $); +__RCSID($NetBSD: fstat.c,v 1.101 2013/10/18 20:18:42 christos Exp $); #endif #endif /* not lint */ @@ -895,6 +895,7 @@ inet6_addrstr(char *buf, size_t len, con { char addr[256], serv[256]; struct sockaddr_in6 sin6; + uint16_t ad2; const int niflags = nflg ? (NI_NUMERICHOST|NI_NUMERICSERV) : 0; (void)memset(sin6, 0, sizeof(sin6)); @@ -903,10 +904,9 @@ inet6_addrstr(char *buf, size_t len, con sin6.sin6_addr = *a; sin6.sin6_port = htons(p); - if (IN6_IS_ADDR_LINKLOCAL(a) - *(u_int16_t *)sin6.sin6_addr.s6_addr[2] != 0) { - sin6.sin6_scope_id = - ntohs(*(uint16_t *)sin6.sin6_addr.s6_addr[2]); + memcpy(ad2, sin6.sin6_addr.s6_addr[2], sizeof(ad2)); + if (IN6_IS_ADDR_LINKLOCAL(a) ad2 != 0) { + sin6.sin6_scope_id = ntohs(ad2); sin6.sin6_addr.s6_addr[2] = 0; sin6.sin6_addr.s6_addr[3] = 0; }
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Oct 18 20:18:42 UTC 2013 Modified Files: src/usr.bin/fstat: fstat.c Log Message: avoid pointer gymnastics To generate a diff of this commit: cvs rdiff -u -r1.100 -r1.101 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sun Nov 25 15:30:29 UTC 2012 Modified Files: src/usr.bin/fstat: misc.c Log Message: support printing rnd descriptor info To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/misc.c diff -u src/usr.bin/fstat/misc.c:1.10 src/usr.bin/fstat/misc.c:1.11 --- src/usr.bin/fstat/misc.c:1.10 Sat Nov 24 20:05:49 2012 +++ src/usr.bin/fstat/misc.c Sun Nov 25 10:30:28 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.10 2012/11/25 01:05:49 christos Exp $ */ +/* $NetBSD: misc.c,v 1.11 2012/11/25 15:30:28 christos Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__RCSID($NetBSD: misc.c,v 1.10 2012/11/25 01:05:49 christos Exp $); +__RCSID($NetBSD: misc.c,v 1.11 2012/11/25 15:30:28 christos Exp $); #define _KMEMUSER #include stdbool.h @@ -50,6 +50,10 @@ __RCSID($NetBSD: misc.c,v 1.10 2012/11/ #include sys/file.h #define copyout_t int #include sys/ksem.h +#define _LIB_LIBKERN_LIBKERN_H_ +#define mutex_enter(a) +#define mutex_exit(a) +#include sys/cprng.h #undef _KERNEL #include sys/vnode.h #include sys/mount.h @@ -57,6 +61,7 @@ __RCSID($NetBSD: misc.c,v 1.10 2012/11/ #include net/bpfdesc.h #include err.h +#include util.h #include string.h #include kvm.h #include fstat.h @@ -96,7 +101,9 @@ static struct nlist nl[] = { { .n_name = vnops }, #define NL_XENEVT 16 { .n_name = xenevt_fileops }, -#define NL_MAX 17 +#define NL_RND 17 +{ .n_name = rnd_fileops }, +#define NL_MAX 18 { .n_name = NULL } }; @@ -189,6 +196,35 @@ p_kqueue(struct file *f) return 0; } +static int +p_rnd(struct file *f) +{ + rp_ctx_t rp; + + if (!KVM_READ(f-f_data, rp, sizeof(rp))) { + dprintf(can't read rnd at %p for pid %d, f-f_data, Pid); + return 0; + } + (void)printf(* rnd ); + if (rp.hard) + printf(bytesonkey=%d, , rp.bytesonkey); + if (rp.cprng) { + cprng_strong_t cprng; + if (!KVM_READ(rp.cprng, cprng, sizeof(cprng))) { + dprintf(can't read rnd cprng at %p for pid %d, + rp.cprng, Pid); + } else { + char buf[128]; + snprintb(buf, sizeof(buf), CPRNG_FMT, cprng.flags); + (void)printf(name=%s, serial=%d%s, flags=%s\n, + cprng.name, cprng.entropy_serial, + cprng.reseed_pending ? , reseed : , buf); + return 0; + } + } + printf(\n); + return 0; +} int pmisc(struct file *f, const char *name) { @@ -222,6 +258,8 @@ pmisc(struct file *f, const char *name) return p_kqueue(f); case NL_SEM: return p_sem(f); + case NL_RND: + return p_rnd(f); case NL_TAP: printf(* tap %lu\n, (unsigned long)(intptr_t)f-f_data); return 0; @@ -229,7 +267,7 @@ pmisc(struct file *f, const char *name) printf(* crypto %p\n, f-f_data); return 0; case NL_MAX: - printf(* %s %p\n, name, f-f_data); + printf(* %s ops=%p %p\n, name, f-f_ops, f-f_data); return 0; default: printf(* %s %p\n, nl[i].n_name, f-f_data);
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sun Nov 25 15:30:29 UTC 2012 Modified Files: src/usr.bin/fstat: misc.c Log Message: support printing rnd descriptor info To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sun Nov 25 00:36:24 UTC 2012 Modified Files: src/usr.bin/fstat: fstat.c Log Message: - add more debugging. - in misctrans() we need the file index not the file type. To generate a diff of this commit: cvs rdiff -u -r1.99 -r1.100 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.99 src/usr.bin/fstat/fstat.c:1.100 --- src/usr.bin/fstat/fstat.c:1.99 Thu Oct 18 22:49:52 2012 +++ src/usr.bin/fstat/fstat.c Sat Nov 24 19:36:23 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.99 2012/10/19 02:49:52 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.100 2012/11/25 00:36:23 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.99 2012/10/19 02:49:52 christos Exp $); +__RCSID($NetBSD: fstat.c,v 1.100 2012/11/25 00:36:23 christos Exp $); #endif #endif /* not lint */ @@ -170,7 +170,7 @@ static const char *inet6_addrstr(char *, #endif static const char *at_addrstr(char *, size_t, const struct sockaddr_at *); static void socktrans(struct socket *, int); -static void misctrans(struct file *); +static void misctrans(struct file *, int); static int ufs_filestat(struct vnode *, struct filestat *); static void usage(void) __dead; static const char *vfilestat(struct vnode *, struct filestat *); @@ -485,8 +485,11 @@ ftrans(fdfile_t *fp, int i) i, fp, Pid); return; } - if (fdfile.ff_file == NULL) + if (fdfile.ff_file == NULL) { + dprintf(null ff_file for %d at %p for pid %d, + i, fp, Pid); return; + } if (!KVM_READ(fdfile.ff_file, file, sizeof(file))) { dprintf(can't read file %d at %p for pid %d, i, fdfile.ff_file, Pid); @@ -510,7 +513,7 @@ ftrans(fdfile_t *fp, int i) case DTYPE_MQUEUE: case DTYPE_SEM: if (checkfile == 0) - misctrans(file); + misctrans(file, i); break; default: dprintf(unknown file type %d for file %d of pid %d, @@ -1192,10 +1195,10 @@ bad: } static void -misctrans(struct file *file) +misctrans(struct file *file, int i) { - PREFIX((int)file-f_type); + PREFIX(i); pmisc(file, dtypes[file-f_type]); }
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sun Nov 25 01:05:49 UTC 2012 Modified Files: src/usr.bin/fstat: misc.c Log Message: return stuff for ksem To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/misc.c diff -u src/usr.bin/fstat/misc.c:1.9 src/usr.bin/fstat/misc.c:1.10 --- src/usr.bin/fstat/misc.c:1.9 Sat Oct 27 18:38:07 2012 +++ src/usr.bin/fstat/misc.c Sat Nov 24 20:05:49 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.9 2012/10/27 22:38:07 alnsn Exp $ */ +/* $NetBSD: misc.c,v 1.10 2012/11/25 01:05:49 christos Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__RCSID($NetBSD: misc.c,v 1.9 2012/10/27 22:38:07 alnsn Exp $); +__RCSID($NetBSD: misc.c,v 1.10 2012/11/25 01:05:49 christos Exp $); #define _KMEMUSER #include stdbool.h @@ -48,6 +48,8 @@ __RCSID($NetBSD: misc.c,v 1.9 2012/10/2 #include sys/proc.h #define _KERNEL #include sys/file.h +#define copyout_t int +#include sys/ksem.h #undef _KERNEL #include sys/vnode.h #include sys/mount.h @@ -55,6 +57,7 @@ __RCSID($NetBSD: misc.c,v 1.9 2012/10/2 #include net/bpfdesc.h #include err.h +#include string.h #include kvm.h #include fstat.h @@ -105,7 +108,7 @@ p_bpf(struct file *f) { struct bpf_d bpf; - if (!KVM_READ(f-f_data, bpf, sizeof (bpf))) { + if (!KVM_READ(f-f_data, bpf, sizeof(bpf))) { dprintf(can't read bpf at %p for pid %d, f-f_data, Pid); return 0; } @@ -133,11 +136,39 @@ p_bpf(struct file *f) } static int +p_sem(struct file *f) +{ + ksem_t ks; + if (!KVM_READ(f-f_data, ks, sizeof(ks))) { + dprintf(can't read sem at %p for pid %d, f-f_data, Pid); + return 0; + } + (void)printf(* ksem ref=%u, value=%u, waiters=%u, flags=0x%x, + mode=%o, uid=%u, gid=%u, ks.ks_ref, ks.ks_value, ks.ks_waiters, + ks.ks_flags, ks.ks_mode, ks.ks_uid, ks.ks_gid); + if (ks.ks_name ks.ks_namelen) { + char buf[64]; + if (ks.ks_namelen = sizeof(buf)) + ks.ks_namelen = sizeof(buf) - 1; + if (!KVM_READ(ks.ks_name, buf, ks.ks_namelen)) { + dprintf(can't read sem name at %p for pid %d, + ks.ks_name, Pid); + } else { + buf[ks.ks_namelen] = '\0'; + (void)printf(, name=%s\n, buf); + return 0; + } + } + (void)printf(\n); + return 0; +} + +static int p_mqueue(struct file *f) { struct mqueue mq; - if (!KVM_READ(f-f_data, mq, sizeof (mq))) { + if (!KVM_READ(f-f_data, mq, sizeof(mq))) { dprintf(can't read mqueue at %p for pid %d, f-f_data, Pid); return 0; } @@ -150,7 +181,7 @@ p_kqueue(struct file *f) { struct kqueue kq; - if (!KVM_READ(f-f_data, kq, sizeof (kq))) { + if (!KVM_READ(f-f_data, kq, sizeof(kq))) { dprintf(can't read kqueue at %p for pid %d, f-f_data, Pid); return 0; } @@ -167,8 +198,17 @@ pmisc(struct file *f, const char *name) if ((n = KVM_NLIST(nl)) == -1) errx(1, Cannot list kernel symbols (%s), KVM_GETERR()); - else if (n != 0 vflg) - warnx(Could not find %d symbols, n); + else if (n != 0 vflg) { + char buf[1024]; + buf[0] = '\0'; + for (struct nlist *l = nl; l-n_name != NULL; l++) { +if (l-n_value != 0) + continue; +strlcat(buf, , , sizeof(buf)); +strlcat(buf, l-n_name, sizeof(buf)); + } + warnx(Could not find %d symbols: %s, n, buf + 2); + } } for (i = 0; i NL_MAX; i++) if ((uintptr_t)f-f_ops == nl[i].n_value) @@ -180,6 +220,8 @@ pmisc(struct file *f, const char *name) return p_mqueue(f); case NL_KQUEUE: return p_kqueue(f); + case NL_SEM: + return p_sem(f); case NL_TAP: printf(* tap %lu\n, (unsigned long)(intptr_t)f-f_data); return 0;
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sun Nov 25 00:36:24 UTC 2012 Modified Files: src/usr.bin/fstat: fstat.c Log Message: - add more debugging. - in misctrans() we need the file index not the file type. To generate a diff of this commit: cvs rdiff -u -r1.99 -r1.100 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sun Nov 25 01:05:49 UTC 2012 Modified Files: src/usr.bin/fstat: misc.c Log Message: return stuff for ksem To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: alnsn Date: Sat Oct 27 22:38:07 UTC 2012 Modified Files: src/usr.bin/fstat: misc.c Log Message: Report jit'ed bpf fildes in fstat. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/misc.c diff -u src/usr.bin/fstat/misc.c:1.8 src/usr.bin/fstat/misc.c:1.9 --- src/usr.bin/fstat/misc.c:1.8 Sat Sep 10 18:34:40 2011 +++ src/usr.bin/fstat/misc.c Sat Oct 27 22:38:07 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.8 2011/09/10 18:34:40 christos Exp $ */ +/* $NetBSD: misc.c,v 1.9 2012/10/27 22:38:07 alnsn Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__RCSID($NetBSD: misc.c,v 1.8 2011/09/10 18:34:40 christos Exp $); +__RCSID($NetBSD: misc.c,v 1.9 2012/10/27 22:38:07 alnsn Exp $); #define _KMEMUSER #include stdbool.h @@ -118,6 +118,8 @@ p_bpf(struct file *f) (void)printf(, immed); if (bpf.bd_seesent) (void)printf(, seesent); + if (bpf.bd_jitcode != NULL) + (void)printf(, jit); if (bpf.bd_async) (void)printf(, asyncgrp=%lu, (unsigned long)bpf.bd_pgid); if (bpf.bd_state == BPF_IDLE)
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: alnsn Date: Sat Oct 27 22:38:07 UTC 2012 Modified Files: src/usr.bin/fstat: misc.c Log Message: Report jit'ed bpf fildes in fstat. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Oct 19 02:11:25 UTC 2012 Modified Files: src/usr.bin/fstat: fstat.c Log Message: more info for unix sockets. XXX: chroot handling To generate a diff of this commit: cvs rdiff -u -r1.97 -r1.98 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.97 src/usr.bin/fstat/fstat.c:1.98 --- src/usr.bin/fstat/fstat.c:1.97 Wed Sep 26 19:01:04 2012 +++ src/usr.bin/fstat/fstat.c Thu Oct 18 22:11:25 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.97 2012/09/26 23:01:04 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.98 2012/10/19 02:11:25 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.97 2012/09/26 23:01:04 christos Exp $); +__RCSID($NetBSD: fstat.c,v 1.98 2012/10/19 02:11:25 christos Exp $); #endif #endif /* not lint */ @@ -1000,12 +1000,10 @@ socktrans(struct socket *sock, int i) /* print address of pcb and connected pcb */ if (so.so_pcb) { char shoconn[4], *cp; + void *pcb[2]; + size_t p = 0; - if (kvm_read(kd, (u_long)so.so_pcb, (char *)unpcb, - sizeof(struct unpcb)) != sizeof(struct unpcb)){ -dprintf(can't read unpcb at %p, so.so_pcb); -goto bad; - } + pcb[0] = so.so_pcb; cp = shoconn; if (!(so.so_state SS_CANTRCVMORE)) @@ -1014,6 +1012,13 @@ socktrans(struct socket *sock, int i) if (!(so.so_state SS_CANTSENDMORE)) *cp++ = ''; *cp = '\0'; +again: + if (kvm_read(kd, (u_long)pcb[p], (char *)unpcb, + sizeof(struct unpcb)) != sizeof(struct unpcb)){ +dprintf(can't read unpcb at %p, so.so_pcb); +goto bad; + } + if (unpcb.unp_addr) { struct sockaddr_un *sun = malloc(unpcb.unp_addrlen); @@ -1027,15 +1032,22 @@ socktrans(struct socket *sock, int i) unpcb.unp_addr); free(sun); } else { - snprintf(fbuf, sizeof(fbuf), %s %s, - shoconn, sun-sun_path); + snprintf(fbuf, sizeof(fbuf), %s %s %s, + shoconn, sun-sun_path, + p == 0 ? [creat] : [using]); free(sun); break; } } - if (unpcb.unp_conn) -snprintf(fbuf, sizeof(fbuf), %s %lx, shoconn, -(long)unpcb.unp_conn); + if (unpcb.unp_conn) { +if (p == 0) { + pcb[++p] = unpcb.unp_conn; + goto again; +} else + snprintf(fbuf, sizeof(fbuf), + %p %s %p, pcb[0], shoconn, + pcb[1]); + } } break; case AF_APPLETALK:
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Oct 19 02:49:52 UTC 2012 Modified Files: src/usr.bin/fstat: fstat.c Log Message: print major device numbers symbolically from kinfo_drivers To generate a diff of this commit: cvs rdiff -u -r1.98 -r1.99 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.98 src/usr.bin/fstat/fstat.c:1.99 --- src/usr.bin/fstat/fstat.c:1.98 Thu Oct 18 22:11:25 2012 +++ src/usr.bin/fstat/fstat.c Thu Oct 18 22:49:52 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.98 2012/10/19 02:11:25 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.99 2012/10/19 02:49:52 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.98 2012/10/19 02:11:25 christos Exp $); +__RCSID($NetBSD: fstat.c,v 1.99 2012/10/19 02:49:52 christos Exp $); #endif #endif /* not lint */ @@ -177,6 +177,7 @@ static const char *vfilestat(struct vn static void vtrans(struct vnode *, int, int); static void ftrans(fdfile_t *, int); static void ptrans(struct file *, struct pipe *, int); +static void kdriver_init(void); int main(int argc, char **argv) @@ -234,6 +235,8 @@ main(int argc, char **argv) usage(); } + kdriver_init(); + if (*(argv += optind)) { for (; *argv; ++argv) { if (getfname(*argv)) @@ -314,6 +317,89 @@ pid_t Pid; break; \ } +static struct kinfo_drivers *kdriver; +static size_t kdriverlen; + +static int +kdriver_comp(const void *a, const void *b) +{ + const struct kinfo_drivers *ka = a; + const struct kinfo_drivers *kb = b; + int kac = ka-d_cmajor == -1 ? 0 : ka-d_cmajor; + int kbc = kb-d_cmajor == -1 ? 0 : kb-d_cmajor; + int kab = ka-d_bmajor == -1 ? 0 : ka-d_bmajor; + int kbb = kb-d_bmajor == -1 ? 0 : kb-d_bmajor; + int c = kac - kbc; + if (c == 0) + return kab - kbb; + else + return c; +} + +static const char * +kdriver_search(int type, dev_t num) +{ + struct kinfo_drivers k, *kp; + static char buf[64]; + + if (nflg) + goto out; + + if (type == VBLK) { + k.d_bmajor = num; + k.d_cmajor = -1; + } else { + k.d_bmajor = -1; + k.d_cmajor = num; + } + kp = bsearch(k, kdriver, kdriverlen, sizeof(*kdriver), kdriver_comp); + if (kp) + return kp-d_name; +out: + snprintf(buf, sizeof(buf), %llu, (unsigned long long)num); + return buf; +} + + +static void +kdriver_init(void) +{ + size_t sz; + int error; + static const int name[2] = { CTL_KERN, KERN_DRIVERS }; + + error = sysctl(name, __arraycount(name), NULL, sz, NULL, 0); + if (error == -1) { + warn(sysctl kern.drivers); + return; + } + + if (sz % sizeof(*kdriver)) { + warnx(bad size %zu for kern.drivers, sz); + return; + } + + kdriver = malloc(sz); + if (kdriver == NULL) { + warn(malloc); + return; + } + + error = sysctl(name, __arraycount(name), kdriver, sz, NULL, 0); + if (error == -1) { + warn(sysctl kern.drivers); + return; + } + + kdriverlen = sz / sizeof(*kdriver); + qsort(kdriver, kdriverlen, sizeof(*kdriver), kdriver_comp); +#ifdef DEBUG + for (size_t i = 0; i kdriverlen; i++) + printf(%d %d %s\n, kdriver[i].d_cmajor, kdriver[i].d_bmajor, + kdriver[i].d_name); +#endif +} + /* * print open files attributed to this process */ @@ -559,8 +645,8 @@ vtrans(struct vnode *vp, int i, int flag if (nflg || ((name = devname(fst.rdev, vn.v_type == VCHR ? S_IFCHR : S_IFBLK)) == NULL)) - (void)printf( %2llu,%-2llu, - (unsigned long long)major(fst.rdev), + (void)printf( %s,%-2llu, + kdriver_search(vn.v_type, major(fst.rdev)), (unsigned long long)minor(fst.rdev)); else (void)printf( %6s, name);
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Oct 19 02:11:25 UTC 2012 Modified Files: src/usr.bin/fstat: fstat.c Log Message: more info for unix sockets. XXX: chroot handling To generate a diff of this commit: cvs rdiff -u -r1.97 -r1.98 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Fri Oct 19 02:49:52 UTC 2012 Modified Files: src/usr.bin/fstat: fstat.c Log Message: print major device numbers symbolically from kinfo_drivers To generate a diff of this commit: cvs rdiff -u -r1.98 -r1.99 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: wiz Date: Wed Oct 3 19:35:08 UTC 2012 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: - In the example for `-f', reference a directory that is actually available in a default installation (/usr/src isn't); - put together two lines which belong to the same sentence; - remove a spurious space character; - remove unneeded consecutive argument for `.Nm' macro. From Bug Hunting. To generate a diff of this commit: cvs rdiff -u -r1.30 -r1.31 src/usr.bin/fstat/fstat.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.1 diff -u src/usr.bin/fstat/fstat.1:1.30 src/usr.bin/fstat/fstat.1:1.31 --- src/usr.bin/fstat/fstat.1:1.30 Sat Oct 8 22:16:03 2011 +++ src/usr.bin/fstat/fstat.1 Wed Oct 3 19:35:08 2012 @@ -1,4 +1,4 @@ -.\ $NetBSD: fstat.1,v 1.30 2011/10/08 22:16:03 jnemeth Exp $ +.\ $NetBSD: fstat.1,v 1.31 2012/10/03 19:35:08 wiz Exp $ .\ .\ Copyright (c) 1987, 1991, 1993 .\ The Regents of the University of California. All rights reserved. @@ -61,9 +61,9 @@ the named file arguments, or to the file current directory if there are no additional filename arguments. For example, to find all files open in the file system where the directory -.Pa /usr/src +.Pa /var/log resides, type -.Dq Li fstat -f /usr/src . +.Dq Li fstat -f /var/log . Please see the .Sx BUGS section for issues with this option. @@ -96,8 +96,7 @@ these data structures are dynamically cr possible for them to disappear while .Nm is running. -This -is normal and unavoidable since the rest of the system is running while +This is normal and unavoidable since the rest of the system is running while .Nm itself is running. .It Ar @@ -233,7 +232,7 @@ and a full duplex socket shows a double .Pq Dq \*[Lt]-\*[Gt] . .Pp For internet sockets -.Nm fstat +.Nm also attempts to print the internet address and port for the local end of a connection. If the socket is connected, it also prints the remote internet address
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: wiz Date: Wed Oct 3 19:35:08 UTC 2012 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: - In the example for `-f', reference a directory that is actually available in a default installation (/usr/src isn't); - put together two lines which belong to the same sentence; - remove a spurious space character; - remove unneeded consecutive argument for `.Nm' macro. From Bug Hunting. To generate a diff of this commit: cvs rdiff -u -r1.30 -r1.31 src/usr.bin/fstat/fstat.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Wed Sep 26 23:01:04 UTC 2012 Modified Files: src/usr.bin/fstat: fstat.c Log Message: fix non-numeric address and port printing. To generate a diff of this commit: cvs rdiff -u -r1.96 -r1.97 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.96 src/usr.bin/fstat/fstat.c:1.97 --- src/usr.bin/fstat/fstat.c:1.96 Sat Mar 24 17:51:23 2012 +++ src/usr.bin/fstat/fstat.c Wed Sep 26 19:01:04 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.96 2012/03/24 21:51:23 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.97 2012/09/26 23:01:04 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.96 2012/03/24 21:51:23 christos Exp $); +__RCSID($NetBSD: fstat.c,v 1.97 2012/09/26 23:01:04 christos Exp $); #endif #endif /* not lint */ @@ -767,31 +767,36 @@ getmnton(struct mount *m) static const char * inet_addrstr(char *buf, size_t len, const struct in_addr *a, uint16_t p) { - char addr[256]; + char addr[256], serv[256]; + struct sockaddr_in sin; + const int niflags = nflg ? (NI_NUMERICHOST|NI_NUMERICSERV) : 0; + + (void)memset(sin, 0, sizeof(sin)); + sin.sin_family = AF_INET; + sin.sin_len = sizeof(sin); + sin.sin_addr = *a; + sin.sin_port = htons(p); + + serv[0] = '\0'; + + if (getnameinfo((struct sockaddr *)sin, sin.sin_len, + addr, sizeof(addr), serv, sizeof(serv), niflags)) { + if (inet_ntop(AF_INET, a, addr, sizeof(addr)) == NULL) + strlcpy(addr, invalid, sizeof(addr)); + } + + if (serv[0] == '\0') + snprintf(serv, sizeof(serv), %u, p); if (a-s_addr == INADDR_ANY) { if (p == 0) - addr[0] = '\0'; + buf[0] = '\0'; else - strlcpy(addr, *, sizeof(addr)); - } else { - struct sockaddr_in sin; - const int niflags = NI_NUMERICHOST; - - (void)memset(sin, 0, sizeof(sin)); - sin.sin_family = AF_INET6; - sin.sin_len = sizeof(sin); - sin.sin_addr = *a; - - if (getnameinfo((struct sockaddr *)sin, sin.sin_len, - addr, sizeof(addr), NULL, 0, niflags)) - if (inet_ntop(AF_INET, a, addr, sizeof(addr)) == NULL) -strlcpy(addr, invalid, sizeof(addr)); + snprintf(buf, len, *:%s, serv); + return buf; } - if (addr[0]) - snprintf(buf, len, %s:%u, addr, p); - else - strlcpy(buf, addr, len); + + snprintf(buf, len, %s:%s, addr, serv); return buf; } @@ -799,39 +804,47 @@ inet_addrstr(char *buf, size_t len, cons static const char * inet6_addrstr(char *buf, size_t len, const struct in6_addr *a, uint16_t p) { - char addr[256]; + char addr[256], serv[256]; + struct sockaddr_in6 sin6; + const int niflags = nflg ? (NI_NUMERICHOST|NI_NUMERICSERV) : 0; + + (void)memset(sin6, 0, sizeof(sin6)); + sin6.sin6_family = AF_INET6; + sin6.sin6_len = sizeof(sin6); + sin6.sin6_addr = *a; + sin6.sin6_port = htons(p); + + if (IN6_IS_ADDR_LINKLOCAL(a) + *(u_int16_t *)sin6.sin6_addr.s6_addr[2] != 0) { + sin6.sin6_scope_id = + ntohs(*(uint16_t *)sin6.sin6_addr.s6_addr[2]); + sin6.sin6_addr.s6_addr[2] = 0; + sin6.sin6_addr.s6_addr[3] = 0; + } + + serv[0] = '\0'; + + if (getnameinfo((struct sockaddr *)sin6, sin6.sin6_len, + addr, sizeof(addr), serv, sizeof(serv), niflags)) { + if (inet_ntop(AF_INET6, a, addr, sizeof(addr)) == NULL) + strlcpy(addr, invalid, sizeof(addr)); + } + + if (serv[0] == '\0') + snprintf(serv, sizeof(serv), %u, p); if (IN6_IS_ADDR_UNSPECIFIED(a)) { if (p == 0) - addr[0] = '\0'; + buf[0] = '\0'; else - strlcpy(addr, *, sizeof(addr)); - } else { - struct sockaddr_in6 sin6; - const int niflags = NI_NUMERICHOST; - - (void)memset(sin6, 0, sizeof(sin6)); - sin6.sin6_family = AF_INET6; - sin6.sin6_len = sizeof(sin6); - sin6.sin6_addr = *a; - - if (IN6_IS_ADDR_LINKLOCAL(a) - *(u_int16_t *)sin6.sin6_addr.s6_addr[2] != 0) { - sin6.sin6_scope_id = -ntohs(*(uint16_t *)sin6.sin6_addr.s6_addr[2]); - sin6.sin6_addr.s6_addr[2] = 0; - sin6.sin6_addr.s6_addr[3] = 0; - } - - if (getnameinfo((struct sockaddr *)sin6, sin6.sin6_len, - addr, sizeof(addr), NULL, 0, niflags)) - if (inet_ntop(AF_INET6, a, addr, sizeof(addr)) == NULL) -strlcpy(addr, invalid, sizeof(addr)); + snprintf(buf, len, *:%s, serv); + return buf; } - if (addr[0]) - snprintf(buf, len, [%s]:%u, addr, p); + + if (strchr(addr, ':') == NULL) + snprintf(buf, len, %s:%s, addr, serv); else - strlcpy(buf, addr, len); + snprintf(buf, len, [%s]:%s, addr, serv); return buf; }
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Wed Sep 26 23:01:04 UTC 2012 Modified Files: src/usr.bin/fstat: fstat.c Log Message: fix non-numeric address and port printing. To generate a diff of this commit: cvs rdiff -u -r1.96 -r1.97 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat Mar 24 21:51:23 UTC 2012 Modified Files: src/usr.bin/fstat: fstat.c Log Message: byte swap the inet6 ports. To generate a diff of this commit: cvs rdiff -u -r1.95 -r1.96 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.95 src/usr.bin/fstat/fstat.c:1.96 --- src/usr.bin/fstat/fstat.c:1.95 Sun Oct 9 17:16:00 2011 +++ src/usr.bin/fstat/fstat.c Sat Mar 24 17:51:23 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.95 2011/10/09 21:16:00 chs Exp $ */ +/* $NetBSD: fstat.c,v 1.96 2012/03/24 21:51:23 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.95 2011/10/09 21:16:00 chs Exp $); +__RCSID($NetBSD: fstat.c,v 1.96 2012/03/24 21:51:23 christos Exp $); #endif #endif /* not lint */ @@ -974,9 +974,9 @@ socktrans(struct socket *sock, int i) goto bad; } inet6_addrstr(lbuf, sizeof(lbuf), in6pcb.in6p_laddr, - in6pcb.in6p_lport); + ntohs(in6pcb.in6p_lport)); inet6_addrstr(fbuf, sizeof(fbuf), in6pcb.in6p_faddr, - in6pcb.in6p_fport); + ntohs(in6pcb.in6p_fport)); break; default: break;
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat Mar 24 21:51:23 UTC 2012 Modified Files: src/usr.bin/fstat: fstat.c Log Message: byte swap the inet6 ports. To generate a diff of this commit: cvs rdiff -u -r1.95 -r1.96 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: chs Date: Sun Oct 9 21:16:00 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.c Log Message: fix rdev reporting for UFS2 and ext2fs. To generate a diff of this commit: cvs rdiff -u -r1.94 -r1.95 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: jnemeth Date: Sat Oct 8 22:16:03 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: add an xref to fstat(2) To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/usr.bin/fstat/fstat.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: mrg Date: Fri Sep 23 07:31:39 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.c Log Message: apply some (uintptr_t) so that printing printers works on i386 (likely all 32 bit.) To generate a diff of this commit: cvs rdiff -u -r1.93 -r1.94 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.93 src/usr.bin/fstat/fstat.c:1.94 --- src/usr.bin/fstat/fstat.c:1.93 Thu Sep 22 17:27:50 2011 +++ src/usr.bin/fstat/fstat.c Fri Sep 23 07:31:39 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.93 2011/09/22 17:27:50 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.94 2011/09/23 07:31:39 mrg Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.93 2011/09/22 17:27:50 christos Exp $); +__RCSID($NetBSD: fstat.c,v 1.94 2011/09/23 07:31:39 mrg Exp $); #endif #endif /* not lint */ @@ -1032,14 +1032,14 @@ default: /* print protocol number and socket address */ snprintf(fbuf, sizeof(fbuf), %d %jx, proto.pr_protocol, - (uintmax_t)sock); + (uintmax_t)(uintptr_t)sock); break; } if (fbuf[0] || lbuf[0]) printf( %s%s%s, fbuf, (fbuf[0] lbuf[0]) ? - : , lbuf); else if (so.so_pcb) - printf( %jx, (uintmax_t)so.so_pcb); + printf( %jx, (uintmax_t)(uintptr_t)so.so_pcb); (void)printf(\n); return; bad:
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: mrg Date: Fri Sep 23 07:31:39 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.c Log Message: apply some (uintptr_t) so that printing printers works on i386 (likely all 32 bit.) To generate a diff of this commit: cvs rdiff -u -r1.93 -r1.94 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Thu Sep 22 17:27:50 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.c Log Message: - factor out common code in the inet and inet6 printing. - add appletalk (ddp) support. To generate a diff of this commit: cvs rdiff -u -r1.92 -r1.93 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat Sep 10 18:34:40 UTC 2011 Modified Files: src/usr.bin/fstat: misc.c Log Message: add all the possible fileops here, and if there is one we know about print that instead of the passed name. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/misc.c diff -u src/usr.bin/fstat/misc.c:1.7 src/usr.bin/fstat/misc.c:1.8 --- src/usr.bin/fstat/misc.c:1.7 Mon Jul 13 17:44:32 2009 +++ src/usr.bin/fstat/misc.c Sat Sep 10 14:34:40 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.7 2009/07/13 21:44:32 christos Exp $ */ +/* $NetBSD: misc.c,v 1.8 2011/09/10 18:34:40 christos Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__RCSID($NetBSD: misc.c,v 1.7 2009/07/13 21:44:32 christos Exp $); +__RCSID($NetBSD: misc.c,v 1.8 2011/09/10 18:34:40 christos Exp $); #define _KMEMUSER #include stdbool.h @@ -59,23 +59,41 @@ #include fstat.h static struct nlist nl[] = { -#define NL_KQUEUE 0 +#define NL_BPF 0 +{ .n_name = bpf_fileops, }, +#define NL_CRYPTO 1 +{ .n_name = cryptofops }, +#define NL_DMIO 2 +{ .n_name = dmio_fileops, }, +#define NL_DRVCTL 3 +{ .n_name = drvctl_fileops, }, +#define NL_DTV_DEMUX 4 +{ .n_name = dtv_demux_fileops, }, +#define NL_FILEMON 5 +{ .n_name = filemon_fileops, }, +#define NL_KQUEUE 6 { .n_name = kqueueops }, -#define NL_MQUEUE 1 +#define NL_MQUEUE 7 { .n_name = mqops }, -#define NL_PIPE 2 +#define NL_PIPE 8 { .n_name = pipeops }, -#define NL_SOCKET 3 +#define NL_PUTTER 9 +{ .n_name = putter_fileops, }, +#define NL_SEM 10 +{ .n_name = semops, }, +#define NL_SOCKET 11 { .n_name = socketops }, -#define NL_VNOPS 4 -{ .n_name = vnops }, -#define NL_CRYPTO 5 -{ .n_name = cryptofops }, -#define NL_BPF 6 -{ .n_name = bpf_fileops, }, -#define NL_TAP 7 +#define NL_SVR4_NET 12 +{ .n_name = svr4_netops }, +#define NL_SVR4_32_NET 13 +{ .n_name = svr4_32_netops }, +#define NL_TAP 14 { .n_name = tap_fileops, }, -#define NL_MAX 8 +#define NL_VNOPS 15 +{ .n_name = vnops }, +#define NL_XENEVT 16 +{ .n_name = xenevt_fileops }, +#define NL_MAX 17 { .n_name = NULL } }; @@ -166,8 +184,11 @@ case NL_CRYPTO: printf(* crypto %p\n, f-f_data); return 0; - default: + case NL_MAX: printf(* %s %p\n, name, f-f_data); return 0; + default: + printf(* %s %p\n, nl[i].n_name, f-f_data); + return 0; } }
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat Sep 10 18:34:54 UTC 2011 Modified Files: src/usr.bin/fstat: Makefile Log Message: add libutil. To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/usr.bin/fstat/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/Makefile diff -u src/usr.bin/fstat/Makefile:1.22 src/usr.bin/fstat/Makefile:1.23 --- src/usr.bin/fstat/Makefile:1.22 Tue Apr 14 18:15:20 2009 +++ src/usr.bin/fstat/Makefile Sat Sep 10 14:34:54 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.22 2009/04/14 22:15:20 lukem Exp $ +# $NetBSD: Makefile,v 1.23 2011/09/10 18:34:54 christos Exp $ # from: @(#)Makefile 8.1 (Berkeley) 6/6/93 .include bsd.own.mk @@ -17,4 +17,7 @@ CPPFLAGS+=-DINET6 .endif +LDADD+=-lutil +DPADD+=${LIBUTIL} + .include bsd.prog.mk
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat Sep 10 18:35:28 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.c Log Message: - remove bogus casts - print recycled vnode flags To generate a diff of this commit: cvs rdiff -u -r1.91 -r1.92 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.91 src/usr.bin/fstat/fstat.c:1.92 --- src/usr.bin/fstat/fstat.c:1.91 Sat Sep 3 09:24:19 2011 +++ src/usr.bin/fstat/fstat.c Sat Sep 10 14:35:28 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.91 2011/09/03 13:24:19 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.92 2011/09/10 18:35:28 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.91 2011/09/03 13:24:19 christos Exp $); +__RCSID($NetBSD: fstat.c,v 1.92 2011/09/10 18:35:28 christos Exp $); #endif #endif /* not lint */ @@ -106,6 +106,7 @@ #include string.h #include unistd.h #include err.h +#include util.h #include fstat.h @@ -358,7 +359,7 @@ * ktrace vnode, if one */ if (p-p_tracep) - ftrans((struct file *)(intptr_t)p-p_tracep, TRACE); + ftrans(p-p_tracep, TRACE); #endif /* * open files @@ -398,15 +399,15 @@ } switch (file.f_type) { case DTYPE_VNODE: - vtrans((struct vnode *)file.f_data, i, file.f_flag); + vtrans(file.f_data, i, file.f_flag); break; case DTYPE_SOCKET: if (checkfile == 0) - socktrans((struct socket *)file.f_data, i); + socktrans(file.f_data, i); break; case DTYPE_PIPE: if (checkfile == 0) - ptrans(file, (struct pipe *)file.f_data, i); + ptrans(file, file.f_data, i); break; case DTYPE_MISC: case DTYPE_KQUEUE: @@ -423,17 +424,22 @@ } } +static const char dead[] = dead; + static const char * vfilestat(struct vnode *vp, struct filestat *fsp) { const char *badtype = NULL; - if (vp-v_type == VNON || vp-v_tag == VT_NON) + if (vp-v_type == VNON) badtype = none; else if (vp-v_type == VBAD) badtype = bad; else switch (vp-v_tag) { + case VT_NON: + badtype = dead; + break; case VT_UFS: case VT_LFS: case VT_MFS: @@ -502,7 +508,7 @@ int fsmatch = 0; DEVS *d; - if (badtype) + if (badtype badtype != dead) return; for (d = devs; d != NULL; d = d-next) if (d-fsid == fst.fsid) { @@ -516,7 +522,13 @@ return; } PREFIX(i); - if (badtype) { + if (badtype == dead) { + char buf[1024]; + (void)snprintb(buf, sizeof(buf), VNODE_FLAGBITS, + vn.v_iflag | vn.v_vflag | vn.v_uflag); + (void)printf( flags %s\n, buf); + return; + } else if (badtype) { (void)printf( - - %10s-\n, badtype); return; }
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat Sep 10 18:34:40 UTC 2011 Modified Files: src/usr.bin/fstat: misc.c Log Message: add all the possible fileops here, and if there is one we know about print that instead of the passed name. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat Sep 10 18:34:54 UTC 2011 Modified Files: src/usr.bin/fstat: Makefile Log Message: add libutil. To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/usr.bin/fstat/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat Sep 10 18:35:28 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.c Log Message: - remove bogus casts - print recycled vnode flags To generate a diff of this commit: cvs rdiff -u -r1.91 -r1.92 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
re: CVS commit: src/usr.bin/fstat
Module Name: src Committed By: christos Date: Sat Sep 3 13:22:56 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: Mention that fstat -f will not list open unix sockets on that filesystem. shouldn't this be a .Sh BUGS entry? it sure isn't a feature. .mrg.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Tue Sep 6 11:31:47 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: move UNIX socket mention in the BUGS section. To generate a diff of this commit: cvs rdiff -u -r1.27 -r1.28 src/usr.bin/fstat/fstat.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.1 diff -u src/usr.bin/fstat/fstat.1:1.27 src/usr.bin/fstat/fstat.1:1.28 --- src/usr.bin/fstat/fstat.1:1.27 Mon Sep 5 14:27:31 2011 +++ src/usr.bin/fstat/fstat.1 Tue Sep 6 07:31:47 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: fstat.1,v 1.27 2011/09/05 18:27:31 wiz Exp $ +.\ $NetBSD: fstat.1,v 1.28 2011/09/06 11:31:47 christos Exp $ .\ .\ Copyright (c) 1987, 1991, 1993 .\ The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\ .\ from: @(#)fstat.1 8.3 (Berkeley) 2/25/94 .\ -.Dd September 3, 2011 +.Dd September 5, 2011 .Dt FSTAT 1 .Os .Sh NAME @@ -64,14 +64,7 @@ .Pa /usr/src resides, type .Dq Li fstat -f /usr/src . -Note that this will not list -.Dv AF_LOCAL -domain sockets open in the file system. -To find all the -.Dv AF_LOCAL -domain sockets, use -.Nm -to list all the sockets, and look for the ones that belong in the file system. +Please see the BUGS section for issues with this option. .It Fl M Extract values associated with the name list from the specified core instead of the default @@ -207,9 +200,11 @@ For TCP, it is the address of the tcpcb, and for UDP, the inpcb (socket pcb). For .Ux -domain sockets, its the address of the socket pcb and the address -of the connected pcb (if connected). -Otherwise the protocol number and address of the socket itself are printed. +domain sockets, its the address of the socket pcb and the name of the +file if available. +Otherwise the address of the connected pcb is printed (if connected). +For other domains, the protocol number and address of the socket itself +are printed. The attempt is to make enough information available to permit further analysis without duplicating .Xr netstat 1 . @@ -219,10 +214,11 @@ command would print for TCP, UDP, and .Ux domain. -Note that since pipes are implemented using sockets, a pipe appears as a -connected +For kernels compiled with +.Dv PIPE_SOCKETPAIR +pipes appear as connected .Ux -domain stream socket. +domain stream sockets. A unidirectional .Ux domain socket indicates the direction of flow with an arrow @@ -268,3 +264,16 @@ .Nm does not attempt to translate the internet address and port numbers into symbolic names. +.Pp +Note that the +.Fl f +option will not list +.Ux +domain sockets open in the file system, because the pathnames in the sockets +may not be absolute and are not deterministic. +To find all the +.Ux +domain sockets, use +.Nm +to list all the sockets, and look for the ones that maybe belong in the +file system.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: wiz Date: Tue Sep 6 19:22:05 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: Remove trailing whitespace and use Sx for section crossreference. To generate a diff of this commit: cvs rdiff -u -r1.28 -r1.29 src/usr.bin/fstat/fstat.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.1 diff -u src/usr.bin/fstat/fstat.1:1.28 src/usr.bin/fstat/fstat.1:1.29 --- src/usr.bin/fstat/fstat.1:1.28 Tue Sep 6 11:31:47 2011 +++ src/usr.bin/fstat/fstat.1 Tue Sep 6 19:22:05 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: fstat.1,v 1.28 2011/09/06 11:31:47 christos Exp $ +.\ $NetBSD: fstat.1,v 1.29 2011/09/06 19:22:05 wiz Exp $ .\ .\ Copyright (c) 1987, 1991, 1993 .\ The Regents of the University of California. All rights reserved. @@ -64,7 +64,9 @@ .Pa /usr/src resides, type .Dq Li fstat -f /usr/src . -Please see the BUGS section for issues with this option. +Please see the +.Sx BUGS +section for issues with this option. .It Fl M Extract values associated with the name list from the specified core instead of the default @@ -214,7 +216,7 @@ command would print for TCP, UDP, and .Ux domain. -For kernels compiled with +For kernels compiled with .Dv PIPE_SOCKETPAIR pipes appear as connected .Ux
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: wiz Date: Mon Sep 5 18:27:31 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: Remove duplicate RCS Id and split file system. To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.27 src/usr.bin/fstat/fstat.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.1 diff -u src/usr.bin/fstat/fstat.1:1.26 src/usr.bin/fstat/fstat.1:1.27 --- src/usr.bin/fstat/fstat.1:1.26 Sat Sep 3 13:22:55 2011 +++ src/usr.bin/fstat/fstat.1 Mon Sep 5 18:27:31 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: fstat.1,v 1.26 2011/09/03 13:22:55 christos Exp $ +.\ $NetBSD: fstat.1,v 1.27 2011/09/05 18:27:31 wiz Exp $ .\ .\ Copyright (c) 1987, 1991, 1993 .\ The Regents of the University of California. All rights reserved. @@ -28,7 +28,6 @@ .\ SUCH DAMAGE. .\ .\ from: @(#)fstat.1 8.3 (Berkeley) 2/25/94 -.\ $NetBSD: fstat.1,v 1.26 2011/09/03 13:22:55 christos Exp $ .\ .Dd September 3, 2011 .Dt FSTAT 1 @@ -57,22 +56,22 @@ Options: .Bl -tag -width Ds .It Fl f -Restrict examination to files open in the same filesystems as -the named file arguments, or to the filesystem containing the +Restrict examination to files open in the same file systems as +the named file arguments, or to the file system containing the current directory if there are no additional filename arguments. -For example, to find all files open in the filesystem where the +For example, to find all files open in the file system where the directory .Pa /usr/src resides, type .Dq Li fstat -f /usr/src . Note that this will not list .Dv AF_LOCAL -domain sockets open in the filesystem. +domain sockets open in the file system. To find all the .Dv AF_LOCAL domain sockets, use .Nm -to list all the sockets, and look for the ones that belong in the filesystem. +to list all the sockets, and look for the ones that belong in the file system. .It Fl M Extract values associated with the name list from the specified core instead of the default @@ -82,7 +81,7 @@ .Pa /netbsd . .It Fl n Numerical format. -Print the device number (maj,min) of the filesystem +Print the device number (maj,min) of the file system the file resides in rather than the mount point name; for special files, print the device number that the special device refers to rather than the filename @@ -146,7 +145,7 @@ If the .Fl n flag wasn't specified, this header is present and is the -pathname that the filesystem the file resides in is mounted on. +pathname that the file system the file resides in is mounted on. .It Li DEV If the .Fl n @@ -185,7 +184,7 @@ .Dq w indicates open for writing. This field is useful when trying to find the processes that are -preventing a filesystem from being downgraded to read-only. +preventing a file system from being downgraded to read-only. .It Li NAME If filename arguments are specified and the .Fl f
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: wiz Date: Mon Sep 5 18:27:31 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: Remove duplicate RCS Id and split file system. To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.27 src/usr.bin/fstat/fstat.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat Sep 3 13:22:56 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: Mention that fstat -f will not list open unix sockets on that filesystem. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/usr.bin/fstat/fstat.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.1 diff -u src/usr.bin/fstat/fstat.1:1.25 src/usr.bin/fstat/fstat.1:1.26 --- src/usr.bin/fstat/fstat.1:1.25 Sun Jan 4 12:19:39 2009 +++ src/usr.bin/fstat/fstat.1 Sat Sep 3 09:22:55 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: fstat.1,v 1.25 2009/01/04 17:19:39 wiz Exp $ +.\ $NetBSD: fstat.1,v 1.26 2011/09/03 13:22:55 christos Exp $ .\ .\ Copyright (c) 1987, 1991, 1993 .\ The Regents of the University of California. All rights reserved. @@ -28,9 +28,9 @@ .\ SUCH DAMAGE. .\ .\ from: @(#)fstat.1 8.3 (Berkeley) 2/25/94 -.\ $NetBSD: fstat.1,v 1.25 2009/01/04 17:19:39 wiz Exp $ +.\ $NetBSD: fstat.1,v 1.26 2011/09/03 13:22:55 christos Exp $ .\ -.Dd January 4, 2009 +.Dd September 3, 2011 .Dt FSTAT 1 .Os .Sh NAME @@ -65,6 +65,14 @@ .Pa /usr/src resides, type .Dq Li fstat -f /usr/src . +Note that this will not list +.Dv AF_LOCAL +domain sockets open in the filesystem. +To find all the +.Dv AF_LOCAL +domain sockets, use +.Nm +to list all the sockets, and look for the ones that belong in the filesystem. .It Fl M Extract values associated with the name list from the specified core instead of the default
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat Sep 3 13:24:19 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.c Log Message: - minor KNF - for system processes (0, 1) where fd_lastfile == -1, fail early. - instead of printing the pcb connection address, print the pathname if possible for unix domain sockets. To generate a diff of this commit: cvs rdiff -u -r1.90 -r1.91 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.90 src/usr.bin/fstat/fstat.c:1.91 --- src/usr.bin/fstat/fstat.c:1.90 Wed Apr 13 20:35:35 2011 +++ src/usr.bin/fstat/fstat.c Sat Sep 3 09:24:19 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.90 2011/04/14 00:35:35 rmind Exp $ */ +/* $NetBSD: fstat.c,v 1.91 2011/09/03 13:24:19 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.90 2011/04/14 00:35:35 rmind Exp $); +__RCSID($NetBSD: fstat.c,v 1.91 2011/09/03 13:24:19 christos Exp $); #endif #endif /* not lint */ @@ -322,11 +322,15 @@ if (p-p_fd == 0 || p-p_cwdi == 0) return; if (!KVM_READ(p-p_fd, filed, sizeof (filed))) { - warnx(can't read filedesc at %p for pid %d, (void *)(uintptr_t)p-p_fd, Pid); + warnx(can't read filedesc at %p for pid %d, + (void *)(uintptr_t)p-p_fd, Pid); return; } + if (filed.fd_lastfile == -1) + return; if (!KVM_READ(p-p_cwdi, cwdi, sizeof(cwdi))) { - warnx(can't read cwdinfo at %p for pid %d, (void *)(uintptr_t)p-p_cwdi, Pid); + warnx(can't read cwdinfo at %p for pid %d, + (void *)(uintptr_t)p-p_cwdi, Pid); return; } if (!KVM_READ(filed.fd_dt, dt, sizeof(dt))) { @@ -335,7 +339,8 @@ } if ((unsigned)filed.fd_lastfile = dt.dt_nfiles || filed.fd_freefile filed.fd_lastfile + 1) { - dprintf(filedesc corrupted at %p for pid %d, (void *)(uintptr_t)p-p_fd, Pid); + dprintf(filedesc corrupted at %p for pid %d, + (void *)(uintptr_t)p-p_fd, Pid); return; } /* @@ -476,7 +481,7 @@ break; } } - return (badtype); + return badtype; } static void @@ -685,21 +690,21 @@ if (!KVM_READ(VTOLAYER(vp), layer_node, sizeof(layer_node))) { dprintf(can't read layer_node at %p for pid %d, VTOLAYER(vp), Pid); - return (error); + return error; } if (!KVM_READ(vp-v_mount, mount, sizeof(struct mount))) { dprintf(can't read mount struct at %p for pid %d, vp-v_mount, Pid); - return (error); + return error; } vp = layer_node.layer_lowervp; if (!KVM_READ(vp, vn, sizeof(struct vnode))) { dprintf(can't read vnode at %p for pid %d, vp, Pid); - return (error); + return error; } if ((badtype = vfilestat(vn, fsp)) == NULL) fsp-fsid = mount.mnt_stat.f_fsidx.__fsid_val[0]; - return (badtype); + return badtype; } static char * @@ -715,10 +720,10 @@ for (mt = mhead; mt != NULL; mt = mt-next) if (m == mt-m) - return (mt-mntonname); + return mt-mntonname; if (!KVM_READ(m, mount, sizeof(struct mount))) { warnx(can't read mount table at %p, m); - return (NULL); + return NULL; } if ((mt = malloc(sizeof (struct mtab))) == NULL) { err(1, malloc(%u), (unsigned int)sizeof(struct mtab)); @@ -728,7 +733,7 @@ MNAMELEN); mt-next = mhead; mhead = mt; - return (mt-mntonname); + return mt-mntonname; } #ifdef INET6 @@ -925,22 +930,42 @@ case AF_LOCAL: /* print address of pcb and connected pcb */ if (so.so_pcb) { + char shoconn[4], *cp; + (void)printf( %lx, (long)so.so_pcb); if (kvm_read(kd, (u_long)so.so_pcb, (char *)unpcb, sizeof(struct unpcb)) != sizeof(struct unpcb)){ dprintf(can't read unpcb at %p, so.so_pcb); goto bad; } - if (unpcb.unp_conn) { -char shoconn[4], *cp; -cp = shoconn; -if (!(so.so_state SS_CANTRCVMORE)) - *cp++ = ''; -*cp++ = '-'; -if (!(so.so_state SS_CANTSENDMORE)) - *cp++ = ''; -*cp = '\0'; + cp = shoconn; + if (!(so.so_state SS_CANTRCVMORE)) +*cp++ = ''; + *cp++ = '-'; + if (!(so.so_state SS_CANTSENDMORE)) +*cp++ = ''; + *cp = '\0'; + if (unpcb.unp_addr) { +struct sockaddr_un *sun = + malloc(unpcb.unp_addrlen); +if (sun == NULL) +err(1, malloc(%zu), + unpcb.unp_addrlen); +if (kvm_read(kd, (u_long)unpcb.unp_addr, +sun, unpcb.unp_addrlen) != +(ssize_t)unpcb.unp_addrlen) { + dprintf(can't read sun at %p, + unpcb.unp_addr); + free(sun); +} else { + (void)printf( %s %s, + shoconn, sun-sun_path); + free(sun); + break; +} + } + if (unpcb.unp_conn) { (void)printf( %s %lx, shoconn, (long)unpcb.unp_conn); } @@ -1037,8 +1062,8 @@ warn(stat(%s), filename); return 0; } - if ((cur = malloc(sizeof(DEVS))) == NULL) { - err(1, malloc(%u), (unsigned int)sizeof(DEVS)); +
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat Sep 3 13:22:56 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.1 Log Message: Mention that fstat -f will not list open unix sockets on that filesystem. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/usr.bin/fstat/fstat.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Sat Sep 3 13:24:19 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.c Log Message: - minor KNF - for system processes (0, 1) where fd_lastfile == -1, fail early. - instead of printing the pcb connection address, print the pathname if possible for unix domain sockets. To generate a diff of this commit: cvs rdiff -u -r1.90 -r1.91 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: rmind Date: Thu Apr 14 00:35:35 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.c Log Message: Add DTYPE_SEM. To generate a diff of this commit: cvs rdiff -u -r1.89 -r1.90 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.89 src/usr.bin/fstat/fstat.c:1.90 --- src/usr.bin/fstat/fstat.c:1.89 Sun May 24 21:41:44 2009 +++ src/usr.bin/fstat/fstat.c Thu Apr 14 00:35:35 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.89 2009/05/24 21:41:44 ad Exp $ */ +/* $NetBSD: fstat.c,v 1.90 2011/04/14 00:35:35 rmind Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.89 2009/05/24 21:41:44 ad Exp $); +__RCSID($NetBSD: fstat.c,v 1.90 2011/04/14 00:35:35 rmind Exp $); #endif #endif /* not lint */ @@ -407,6 +407,7 @@ case DTYPE_KQUEUE: case DTYPE_CRYPTO: case DTYPE_MQUEUE: + case DTYPE_SEM: if (checkfile == 0) misctrans(file); break;
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: rmind Date: Thu Apr 14 00:35:35 UTC 2011 Modified Files: src/usr.bin/fstat: fstat.c Log Message: Add DTYPE_SEM. To generate a diff of this commit: cvs rdiff -u -r1.89 -r1.90 src/usr.bin/fstat/fstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Mon Jul 13 17:57:35 UTC 2009 Modified Files: src/usr.bin/fstat: misc.c Log Message: sys/mqueue.h needs sys/types.h now To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/misc.c diff -u src/usr.bin/fstat/misc.c:1.4 src/usr.bin/fstat/misc.c:1.5 --- src/usr.bin/fstat/misc.c:1.4 Sun Apr 12 02:36:12 2009 +++ src/usr.bin/fstat/misc.c Mon Jul 13 13:57:35 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.4 2009/04/12 06:36:12 lukem Exp $ */ +/* $NetBSD: misc.c,v 1.5 2009/07/13 17:57:35 christos Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -30,10 +30,11 @@ */ #include sys/cdefs.h -__RCSID($NetBSD: misc.c,v 1.4 2009/04/12 06:36:12 lukem Exp $); +__RCSID($NetBSD: misc.c,v 1.5 2009/07/13 17:57:35 christos Exp $); #include stdbool.h #include sys/param.h +#include sys/types.h #include sys/time.h #include sys/stat.h #include sys/condvar.h
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: christos Date: Mon Jul 13 21:43:24 UTC 2009 Modified Files: src/usr.bin/fstat: misc.c Log Message: need _KMEMUSER too. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/usr.bin/fstat/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/misc.c diff -u src/usr.bin/fstat/misc.c:1.5 src/usr.bin/fstat/misc.c:1.6 --- src/usr.bin/fstat/misc.c:1.5 Mon Jul 13 13:57:35 2009 +++ src/usr.bin/fstat/misc.c Mon Jul 13 17:43:24 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.5 2009/07/13 17:57:35 christos Exp $ */ +/* $NetBSD: misc.c,v 1.6 2009/07/13 21:43:24 christos Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -30,10 +30,11 @@ */ #include sys/cdefs.h -__RCSID($NetBSD: misc.c,v 1.5 2009/07/13 17:57:35 christos Exp $); +__RCSID($NetBSD: misc.c,v 1.6 2009/07/13 21:43:24 christos Exp $); #include stdbool.h #include sys/param.h +#define _KMEMUSER #include sys/types.h #include sys/time.h #include sys/stat.h
CVS commit: src/usr.bin/fstat
Module Name:src Committed By: lukem Date: Sun Apr 12 06:36:12 UTC 2009 Modified Files: src/usr.bin/fstat: fstat.c fstat.h isofs.c misc.c ntfs.c ptyfs.c tmpfs.c Log Message: Fix sign-compare issues. To generate a diff of this commit: cvs rdiff -u -r1.87 -r1.88 src/usr.bin/fstat/fstat.c cvs rdiff -u -r1.8 -r1.9 src/usr.bin/fstat/fstat.h cvs rdiff -u -r1.6 -r1.7 src/usr.bin/fstat/isofs.c cvs rdiff -u -r1.3 -r1.4 src/usr.bin/fstat/misc.c cvs rdiff -u -r1.11 -r1.12 src/usr.bin/fstat/ntfs.c cvs rdiff -u -r1.5 -r1.6 src/usr.bin/fstat/ptyfs.c cvs rdiff -u -r1.7 -r1.8 src/usr.bin/fstat/tmpfs.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/fstat/fstat.c diff -u src/usr.bin/fstat/fstat.c:1.87 src/usr.bin/fstat/fstat.c:1.88 --- src/usr.bin/fstat/fstat.c:1.87 Mon Dec 29 00:59:08 2008 +++ src/usr.bin/fstat/fstat.c Sun Apr 12 06:36:12 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.c,v 1.87 2008/12/29 00:59:08 christos Exp $ */ +/* $NetBSD: fstat.c,v 1.88 2009/04/12 06:36:12 lukem Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ #if 0 static char sccsid[] = @(#)fstat.c 8.3 (Berkeley) 5/2/95; #else -__RCSID($NetBSD: fstat.c,v 1.87 2008/12/29 00:59:08 christos Exp $); +__RCSID($NetBSD: fstat.c,v 1.88 2009/04/12 06:36:12 lukem Exp $); #endif #endif /* not lint */ @@ -519,7 +519,7 @@ (void)snprintf(mode, sizeof mode, %o, fst.mode); else strmode(fst.mode, mode); - (void)printf( %7lu %*s, (unsigned long)fst.fileid, nflg ? 5 : 10, mode); + (void)printf( %7PRIu64 %*s, fst.fileid, nflg ? 5 : 10, mode); switch (vn.v_type) { case VBLK: case VCHR: { @@ -580,7 +580,7 @@ } fsp-fsid = inode.i_dev 0x; - fsp-fileid = (long)inode.i_number; + fsp-fileid = inode.i_number; fsp-mode = (mode_t)inode.i_mode; fsp-size = inode.i_size; @@ -599,7 +599,7 @@ return 0; } fsp-fsid = inode.i_dev 0x; - fsp-fileid = (long)inode.i_number; + fsp-fileid = inode.i_number; if (!KVM_READ(inode.i_e2fs_mode, mode, sizeof mode)) { dprintf(can't read inode %p's mode at %p for pid %d, VTOI(vp), Index: src/usr.bin/fstat/fstat.h diff -u src/usr.bin/fstat/fstat.h:1.8 src/usr.bin/fstat/fstat.h:1.9 --- src/usr.bin/fstat/fstat.h:1.8 Tue Jul 22 22:58:04 2008 +++ src/usr.bin/fstat/fstat.h Sun Apr 12 06:36:12 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: fstat.h,v 1.8 2008/07/22 22:58:04 christos Exp $ */ +/* $NetBSD: fstat.h,v 1.9 2009/04/12 06:36:12 lukem Exp $ */ /*- * Copyright (c) 1988, 1993 * The Regents of the University of California. All rights reserved. @@ -30,7 +30,7 @@ struct filestat { long fsid; - long fileid; + ino_t fileid; mode_t mode; off_t size; dev_t rdev; @@ -40,7 +40,8 @@ * a kvm_read that returns true if everything is read */ #define KVM_READ(kaddr, paddr, len) \ - (kvm_read(kd, (u_long)(kaddr), (void *)(paddr), (len)) == (len)) + ((size_t)kvm_read(kd, (u_long)(kaddr), (void *)(paddr), (len)) \ + == (size_t)(len)) #define KVM_NLIST(nl) \ kvm_nlist(kd, (nl)) #define KVM_GETERR() \ Index: src/usr.bin/fstat/isofs.c diff -u src/usr.bin/fstat/isofs.c:1.6 src/usr.bin/fstat/isofs.c:1.7 --- src/usr.bin/fstat/isofs.c:1.6 Thu May 11 11:56:38 2006 +++ src/usr.bin/fstat/isofs.c Sun Apr 12 06:36:12 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: isofs.c,v 1.6 2006/05/11 11:56:38 yamt Exp $ */ +/* $NetBSD: isofs.c,v 1.7 2009/04/12 06:36:12 lukem Exp $ */ /*- * Copyright (c) 1988, 1993 * The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ */ #include sys/cdefs.h -__RCSID($NetBSD: isofs.c,v 1.6 2006/05/11 11:56:38 yamt Exp $); +__RCSID($NetBSD: isofs.c,v 1.7 2009/04/12 06:36:12 lukem Exp $); #include sys/param.h #include sys/time.h @@ -54,7 +54,7 @@ return 0; } fsp-fsid = inode.i_dev 0x; - fsp-fileid = (long)inode.i_number; + fsp-fileid = inode.i_number; fsp-mode = inode.inode.iso_mode; fsp-size = inode.i_size; fsp-rdev = inode.i_dev; Index: src/usr.bin/fstat/misc.c diff -u src/usr.bin/fstat/misc.c:1.3 src/usr.bin/fstat/misc.c:1.4 --- src/usr.bin/fstat/misc.c:1.3 Thu Feb 26 17:30:51 2009 +++ src/usr.bin/fstat/misc.c Sun Apr 12 06:36:12 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.3 2009/02/26 17:30:51 christos Exp $ */ +/* $NetBSD: misc.c,v 1.4 2009/04/12 06:36:12 lukem Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__RCSID($NetBSD: misc.c,v 1.3 2009/02/26 17:30:51 christos Exp $); +__RCSID($NetBSD: misc.c,v 1.4 2009/04/12 06:36:12 lukem Exp $); #include stdbool.h #include sys/param.h @@ -149,7 +149,7 @@ warnx(Could not find %d symbols, n); } for (i = 0; i NL_MAX; i++) - if ((intptr_t)f-f_ops == nl[i].n_value) + if ((uintptr_t)f-f_ops == nl[i].n_value) break; switch (i) { case NL_BPF: Index: src/usr.bin/fstat/ntfs.c diff -u src/usr.bin/fstat/ntfs.c:1.11 src/usr.bin/fstat/ntfs.c:1.12 ---