History log of /freebsd-head/usr.bin/netstat/unix.c
Revision Date Author Comments
39f527e7eedb9cb4fb142f42f239c78ab536c970 10-Jul-2018 brooks <brooks@FreeBSD.org> Use uintptr_t alone when assigning to kvaddr_t variables.

Suggested by: jhb
e2ea71f5bbc27582a2cdd1414a526e9988de23bc 05-Jul-2018 brooks <brooks@FreeBSD.org> Work around lame warnings in ancient gcc on 32-bit platforms.

Fixes r335979.
6615ed4c6149c9810ba766e318f591d44a0596df 05-Jul-2018 brooks <brooks@FreeBSD.org> Make struct xinpcb and friends word-size independent.

Replace size_t members with ksize_t (uint64_t) and pointer members
(never used as pointers in userspace, but instead as unique
idenitifiers) with kvaddr_t (uint64_t). This makes the structs
identical between 32-bit and 64-bit ABIs.

On 64-bit bit systems, the ABI is maintained. On 32-bit systems,
this is an ABI breaking change. The ABI of most of these structs
was previously broken in r315662. This also imposes a small API
change on userspace consumers who must handle kernel pointers
becoming virtual addresses.

PR: 228301 (exp-run by antoine)
Reviewed by: jtl, kib, rwatson (various versions)
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D15386
872b698bd4a1bfc0bf008c09228e6fd238809c75 20-Nov-2017 pfg <pfg@FreeBSD.org> General further adoption of SPDX licensing ID tags.

Mainly focus on files that use BSD 3-Clause license.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.

Special thanks to Wind River for providing access to "The Duke of
Highlander" tool: an older (2014) run over FreeBSD tree was useful as a
starting point.
7168fac38845f2e3dded297a95af76ede2fc01f2 02-Oct-2017 glebius <glebius@FreeBSD.org> Hide struct socket and struct unpcb from the userland.

Violators may define _WANT_SOCKET and _WANT_UNPCB respectively and
are not guaranteed for stability of the structures. The violators
list is the the usual one: libprocstat(3) and netstat(1) internally
and lsof in ports.

In struct xunpcb remove the inclusion of kernel structure and add
a bunch of spare fields. The xsocket already has socket not included,
but add there spares as well. Embed xsockbuf into xsocket.

Sort declarations in sys/socketvar.h to separate kernel only from
userland available ones.

PR: 221820 (exp-run)
7e6cabd06e6caa6a02eeb86308dc0cb3f27e10da 28-Feb-2017 imp <imp@FreeBSD.org> Renumber copyright clause 4

Renumber cluase 4 to 3, per what everybody else did when BSD granted
them permission to remove clause 3. My insistance on keeping the same
numbering for legal reasons is too pedantic, so give up on that point.

Submitted by: Jan Schaumann <jschauma@stevens.edu>
Pull Request: https://github.com/freebsd/freebsd/pull/96
1b12c4f0adbb7641116ff77a2a7eb4fb00abf1bc 05-Jan-2017 delphij <delphij@FreeBSD.org> Use strlcpy and snprintf in netstat(1).

Expand inet6name() line buffer to NI_MAXHOST and use strlcpy/snprintf
in various places.

Reported by: Anton Yuzhaninov <citrin citrin ru>
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D8916
00d578928eca75be320b36d37543a7e2a4f9fbdb 27-May-2016 grehan <grehan@FreeBSD.org> Create branch for bhyve graphics import.
d2d25bb0ca583e8268be8a67a3b38491a95bdb46 18-Apr-2016 araujo <araujo@FreeBSD.org> Use NULL instead of 0 for pointers.

Also malloc will return NULL if it cannot allocate memory.

MFC after: 2 weeks.
b04e8a547e7e868f83d0fab68feb768770323303 02-Feb-2016 alfred <alfred@FreeBSD.org> Increase max allowed backlog for listen sockets
from short to int.

PR: 203922
Submitted by: White Knight <white_knight@2ch.net>
MFC After: 4 weeks
0ea1b83e3703e39c50804c558e396324cec66c74 21-Feb-2015 marcel <marcel@FreeBSD.org> Convert netstat to use libxo.

Obtained from: Phil Shafer <phil@juniper.net>
Ported to -current by: alfred@ (mostly), Kim Shrier
Formatting: marcel@
Sponsored by: Juniper Networks, Inc.
78c1f8fbf46602fa3a316af9a8cb3221b76a24b2 01-Dec-2014 dim <dim@FreeBSD.org> Merge ^/head r275262 through r275363.
25da94eb3ed654f7181ce453c6c5cc7e77d38133 30-Nov-2014 glebius <glebius@FreeBSD.org> Merge from projects/sendfile:

o Introduce a notion of "not ready" mbufs in socket buffers. These
mbufs are now being populated by some I/O in background and are
referenced outside. This forces following implications:
- An mbuf which is "not ready" can't be taken out of the buffer.
- An mbuf that is behind a "not ready" in the queue neither.
- If sockbet buffer is flushed, then "not ready" mbufs shouln't be

o In struct sockbuf the sb_cc field is split into sb_ccc and sb_acc.
The sb_ccc stands for ""claimed character count", or "committed
character count". And the sb_acc is "available character count".
Consumers of socket buffer API shouldn't already access them directly,
but use sbused() and sbavail() respectively.
o Not ready mbufs are marked with M_NOTREADY, and ready but blocked ones
o New field sb_fnrdy points to the first not ready mbuf, to avoid linear
o New function sbready() is provided to activate certain amount of mbufs
in a socket buffer.

A special note on SCTP:
SCTP has its own sockbufs. Unfortunately, FreeBSD stack doesn't yet
allow protocol specific sockbufs. Thus, SCTP does some hacks to make
itself compatible with FreeBSD: it manages sockbufs on its own, but keeps
sb_cc updated to inform the stack of amount of data in them. The new
notion of "not ready" data isn't supported by SCTP. Instead, only a
mechanical substitute is done: s/sb_cc/sb_ccc/.
A proper solution would be to take away struct sockbuf from struct
socket and allow protocols to implement their own socket buffers, like
SCTP already does. This was discussed with rrs@.

Sponsored by: Netflix
Sponsored by: Nginx, Inc.
eb1a5f8de9f7ea602c373a710f531abbf81141c4 21-Feb-2014 gjb <gjb@FreeBSD.org> Move ^/user/gjb/hacking/release-embedded up one directory, and remove
^/user/gjb/hacking since this is likely to be merged to head/ soon.

Sponsored by: The FreeBSD Foundation
6b01bbf146ab195243a8e7d43bb11f8835c76af8 27-Dec-2013 gjb <gjb@FreeBSD.org> Copy head@r259933 -> user/gjb/hacking/release-embedded for initial
inclusion of (at least) arm builds with the release.

Sponsored by: The FreeBSD Foundation
8f92a0e98309ecb478adf087a1888c41e6819e5a 19-Feb-2013 charnier <charnier@FreeBSD.org> WARNS=6 compliance
29af67e52c02dc751039a3117bc88ae6192e891e 11-Dec-2010 joel <joel@FreeBSD.org> Remove the advertising clause from UCB copyrighted files in usr.bin. This
is in accordance with the information provided at

Also add $FreeBSD$ to a few files to keep svn happy.

Discussed with: imp, rwatson
09f9c897d33c41618ada06fbbcf1a9b3812dee53 19-Oct-2010 jamie <jamie@FreeBSD.org> A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.
f1216d1f0ade038907195fc114b7e630623b402c 19-Mar-2010 delphij <delphij@FreeBSD.org> Create a custom branch where I will be able to do the merge.
39779f43a947160c4a83b0847f41cdeea2a9ed68 05-Oct-2009 rwatson <rwatson@FreeBSD.org> netstat(1) support for UNIX SOCK_SEQPACKET sockets -- changes were required
only for the kvm case, as we supported SOCK_SEQPACKET via sysctl already.

Sponsored by: Google
MFC after: 3 months
21750937a7237874f3b78cae9b4f522d2bf161d4 31-Dec-2008 maxim <maxim@FreeBSD.org> o With -L flag show unix sockets listen queues stats. It is useful
to know number of not accepted connections for monitoring purposes.

PR: bin/128871
Submitted by: Anton Yuzhaninov
MFC after: 1 month
19b6af98ec71398e77874582eb84ec5310c7156f 22-Nov-2008 dfr <dfr@FreeBSD.org> Clone Kip's Xen on stable/6 tree so that I can work on improving FreeBSD/amd64
performance in Xen's HVM mode.
cf5320822f93810742e3d4a1ac8202db8482e633 19-Oct-2008 lulf <lulf@FreeBSD.org> - Import the HEAD csup code which is the basis for the cvsmode work.
4e4c1baf05facc6b498b90fd6adbd3a8e2c1444a 16-Mar-2008 obrien <obrien@FreeBSD.org> MFC: style(9)
74070565806ee33326b76dcdd5e1e0a86cd4e6ed 02-Jan-2008 obrien <obrien@FreeBSD.org> style(9)
+ kread is not a boolean, so check it as such
+ fix $FreeBSD$ Ids
+ denote copyrights with /*-
+ misc whitespace changes.
818361dec31495e88061ffe2312c04e835d973d5 04-Oct-2007 obrien <obrien@FreeBSD.org> MFC: Use uintmax_t to pass around 64-bit quantities, including to printf().
Using uintmax_t is also robust to further extensions in both the C language
and the bitwidth of kernel counters.
44ff2749c081059ba6487d842a736b022cce05bb 23-Jul-2007 jhb <jhb@FreeBSD.org> MFC: Restore netstat -M functionality for most statistics on core dumps.
One change in this patch relative to the changes in HEAD is that the
mroute statistics will still fallback to using libkvm on live kernels
if the sysctl fails.
27187e7f6bd04a94e9ada0ca994e7c828abb4514 16-Jul-2007 jhb <jhb@FreeBSD.org> Restore netstat -M functionality for most statistics on core dumps. In
general, when support was added to netstat for fetching data using sysctl,
no provision was left for fetching equivalent data from a core dump, and
in fact, netstat would _always_ fetch data from the live kernel using
sysctl even when -M was specified resulting in the user believing they
were getting data from coredumps when they actually weren't. Some specific
- Add a global 'live' variable that is true if netstat is running against
the live kernel and false if -M has been specified.
- Stop abusing the sysctl flag in the protocol tables to hold the protocol
number. Instead, the protocol is now its own field in the tables, and
it is passed as a separate parameter to the PCB and stat routines rather
than overloading the KVM offset parameter.
- Don't run PCB or stats functions who don't have a namelist offset if we
are being run against a crash dump (!live).
- For the inet and unix PCB routines, we generate the same buffer from KVM
that the sysctl usually generates complete with the header and trailer.
- Don't run bpf stats for !live (before it would just silently always run
- kread() no longer trashes memory when opening the buffer if there is an
error on open and the passed in buffer is smaller than _POSIX2_LINE_MAX.
- The multicast routing code doesn't fallback to kvm on live kernels if
the sysctl fails. Keeping this made the code rather hairy, and netstat
is already tied to the kernel ABI anyway (even when using sysctl's since
things like xinpcb contain an inpcb) so any kernels this is run against
that have the multicast routing stuff should have the sysctls.
- Don't try to dig around in the kernel linker in the netgraph PCB routine
for core dumps.

Other notes:
- sctp's PCB routine only works on live kernels, it looked rather
complicated to generate all the same stuff via KVM. Someone can always
add it later if desired though.
- Fix the ipsec removal bug where N_xxx for IPSEC stats weren't renumbered.
- Use sysctlbyname() everywhere rather than hardcoded mib values.

MFC after: 1 week
Approved by: re (rwatson)
e1db503689ae54aa3513f73b6e1aa4212ded2641 28-Jul-2006 yar <yar@FreeBSD.org> Achieve WARNS=2 by using uintmax_t to pass around 64-bit quantities,
including to printf(). Using uintmax_t is also robust to further
extensions in both the C language and the bitwidth of kernel counters.

Tested on: i386 amd64 ia64
cd48a1d32b7e37d716e9ca0da9ba773994c976b3 26-Jul-2004 charnier <charnier@FreeBSD.org> Add __FBSDID. Replace local variable sin by sockin to not conflict with sin(3).
Use warnx() instead of warn() when error message is not of any interest. Add
86b3836232069126cbad3fccd52778f5adc4a676 24-Jul-2002 jdp <jdp@FreeBSD.org> Widen struct sockbuf's sb_timeo member to int from short. With
non-default but reasonable values of hz this member overflowed,
breaking NFS over UDP.

Also, as long as I'm plowing up struct sockbuf ... Change certain
members from u_long/long to u_int/int in order to reduce wasted
space on 64-bit machines. This change was requested by Andrew

Netstat and systat need to be rebuilt. I am incrementing
__FreeBSD_version in case any ports need to change.
ee746c97f9f42b279e24583560b4f0eaef1e081b 15-Jun-2001 assar <assar@FreeBSD.org> remove K&R support
6c0b683445bcb0c4262928ed96c5600046fd89c4 15-Jun-2001 assar <assar@FreeBSD.org> revert removal of warning and K&R support

Requested by: bde
9e34fe7efd02802c8741141cf670713ba1ade2e5 15-Jun-2001 assar <assar@FreeBSD.org> remove most of the warnings
4ea1588b37cbd62c1c2af3dfbd4c731cde0ea954 30-Dec-2000 phk <phk@FreeBSD.org> Use macro API to <sys/queue.h>

Submitted by: "Jason" <jsmethers@pdq.net>
Reviewed by: phk
b42951578188c5aab5c9f8cbcde4a743f8092cdc 02-Apr-2000 cvs2svn <cvs2svn@FreeBSD.org> This commit was manufactured by cvs2svn to create branch 'ALSA'.
3b842d34e82312a8004a7ecd65ccdb837ef72ac1 28-Aug-1999 peter <peter@FreeBSD.org> $Id$ -> $FreeBSD$
f3e30dacf98c8cd90e0a209a43b6023793cc0292 16-Feb-1999 fenner <fenner@FreeBSD.org> Fix off-by-one error.
8cd84a68cc2bb1ddbe112224cee1f42017fbfbc0 08-Aug-1998 phk <phk@FreeBSD.org> Make netstat work again.
0609531ab6b945c4918206f095bc1f6640408654 06-Jul-1998 bde <bde@FreeBSD.org> Fixed printf format errors.
949dcf30df1d0553ddf55a3bbccfcce8f9f010dd 16-May-1998 wollman <wollman@FreeBSD.org> Fix rev. 1.7: get offsetof from the correct header file.
1ec8848ea498015b3c28b8f070f920c623d59363 16-May-1998 ache <ache@FreeBSD.org> Fix broken sun_len usage: it is not sun_path length but bigger
e37570d81294700974f15cb7d91068b206166646 15-May-1998 wollman <wollman@FreeBSD.org> mbuf, inet, and unix modules no longer read kvm.
0506343883d62f6649f7bbaf1a436133cef6261d 11-Jan-1998 cvs2svn <cvs2svn@FreeBSD.org> This commit was manufactured by cvs2svn to create branch 'jb'.
7c6e96080c4fb49bf912942804477d202a53396c 10-Jan-1998 cvs2svn <cvs2svn@FreeBSD.org> This commit was manufactured by cvs2svn to create branch 'JB'.
143b9973292699a6d3c7ec53201c660848be6a17 25-Aug-1997 wollman <wollman@FreeBSD.org> While I'm in here, fix address printing for `netstat -f unix' which has been
broken for a couple of weeks now...
e97a8f1bb5fbb72a7aba41985727d01d65f488c2 29-Jul-1997 charnier <charnier@FreeBSD.org> Remove prog, unused variables.
Cosmetic in usage string.
5c1e86ebb424294fcfae39ae7ff1efcf8808086d 02-Jun-1996 alex <alex@FreeBSD.org> Code cleanup: remove unused variables, use correct *printf format
specifiers (some unsigned values were printed as signed, some longs
were printed as ints), and place parentheses around assignments in
if statements.
42390683e5de322e34b244ea03ffa0e6e1b0cb0f 11-Mar-1996 dg <dg@FreeBSD.org> Move #include of queue.h before #include of socketvar.h in preparation for
struct socket changes.
86f1bc4514fdcfd255f37f3218fe234bdc3664fc 05-Nov-1995 cvs2svn <cvs2svn@FreeBSD.org> This commit was manufactured by cvs2svn to create branch 'LINUX'.
2e14d9ebc3d3592c67bdf625af9ebe0dfc386653 14-Mar-1995 cvs2svn <cvs2svn@FreeBSD.org> This commit was manufactured by cvs2svn to create branch 'MATT_THOMAS'.
34cd81d75f398ee455e61969b118639dacbfd7a6 23-Sep-1994 cvs2svn <cvs2svn@FreeBSD.org> This commit was manufactured by cvs2svn to create branch 'MACKERRAS'.
e16baf7a5fe7ac1453381d0017ed1dcdeefbc995 07-Aug-1994 cvs2svn <cvs2svn@FreeBSD.org> This commit was manufactured by cvs2svn to create branch 'SUNRPC'.
f9ab90d9d6d02989a075d0f0074496d5b1045e4b 27-May-1994 rgrimes <rgrimes@FreeBSD.org> BSD 4.4 Lite Usr.bin Sources