PSARC 2014/401 nicstat version 1.95
authorRich Burridge <rich.burridge@oracle.com>
Tue, 07 Apr 2015 19:39:47 -0700
changeset 4066 ab220f4ee1f7
parent 4065 15a3200fff2d
child 4068 29a9d33b67fa
PSARC 2014/401 nicstat version 1.95 17257965 Integrate "nicstat" utility into Solaris
components/nicstat/Makefile
components/nicstat/nicstat.license
components/nicstat/nicstat.p5m
components/nicstat/patches/001-solaris-build.patch
components/nicstat/patches/002-adjust-man-page.patch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/nicstat/Makefile	Tue Apr 07 19:39:47 2015 -0700
@@ -0,0 +1,58 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+#
+include ../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		nicstat
+COMPONENT_VERSION=	1.95
+COMPONENT_PROJECT_URL=	http://sourceforge.net/projects/nicstat/
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:c4cc33f8838f4523f27c3d7584eedbe59f4c587f0821612f5ac2201adc18b367
+COMPONENT_ARCHIVE_URL=	$(COMPONENT_PROJECT_URL)files/$(COMPONENT_ARCHIVE)/download
+COMPONENT_BUGDB=	utility/nicstat
+
+TPNO=			20669
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/justmake.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+COMPONENT_BUILD_ENV +=	CC="$(CC) -m64"
+COMPONENT_BUILD_ARGS =	-f Makefile.Solaris
+
+PATCH_LEVEL =		0
+
+# Just get stuff from the build directory.
+PKG_PROTO_DIRS += $(BUILD_DIR_64)
+
+ASLR_MODE = $(ASLR_ENABLE)
+
+build:		$(BUILD_64)
+
+# Makefile.Solaris is pretty useless for working in Userland.
+install:	$(BUILD_64)
+
+test:		$(NO_TESTS)
+
+REQUIRED_PACKAGES += system/library
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/nicstat/nicstat.license	Tue Apr 07 19:39:47 2015 -0700
@@ -0,0 +1,216 @@
+Portions of this program use nicstat 1.95, the open source version is made
+available by Brendan Gregg under the terms of the below version of the
+Artistic License.  As such, Oracle is required to provide the following notices.
+Note, however, that the Oracle program license that accompanied this program
+determines your right to use the Oracle program, including nicstat 1.95, and
+the terms contained in the following notices do not change those rights.
+
+Extensions to nicstat have been made by Oracle to support current versions
+of Solaris and provide additional tools.  These changes are detailed in the
+https://java.net/projects/solaris-userland/sources/gate/show/components/nicstat/patches
+subdirectory.
+
+The current open source version of nicstat can be downloaded at:
+http://sourceforge.net/projects/nicstat/
+
+		       The Artistic License 2.0
+
+	    Copyright (c) 2000-2006, The Perl Foundation.
+
+     Everyone is permitted to copy and distribute verbatim copies
+      of this license document, but changing it is not allowed.
+
+Preamble
+
+This license establishes the terms under which a given free software
+Package may be copied, modified, distributed, and/or redistributed.
+The intent is that the Copyright Holder maintains some artistic
+control over the development of that Package while still keeping the
+Package available as open source and free software.
+
+You are always permitted to make arrangements wholly outside of this
+license directly with the Copyright Holder of a given Package.  If the
+terms of this license do not permit the full use that you propose to
+make of the Package, you should contact the Copyright Holder and seek
+a different licensing arrangement. 
+
+Definitions
+
+    "Copyright Holder" means the individual(s) or organization(s)
+    named in the copyright notice for the entire Package.
+
+    "Contributor" means any party that has contributed code or other
+    material to the Package, in accordance with the Copyright Holder's
+    procedures.
+
+    "You" and "your" means any person who would like to copy,
+    distribute, or modify the Package.
+
+    "Package" means the collection of files distributed by the
+    Copyright Holder, and derivatives of that collection and/or of
+    those files. A given Package may consist of either the Standard
+    Version, or a Modified Version.
+
+    "Distribute" means providing a copy of the Package or making it
+    accessible to anyone else, or in the case of a company or
+    organization, to others outside of your company or organization.
+
+    "Distributor Fee" means any fee that you charge for Distributing
+    this Package or providing support for this Package to another
+    party.  It does not mean licensing fees.
+
+    "Standard Version" refers to the Package if it has not been
+    modified, or has been modified only in ways explicitly requested
+    by the Copyright Holder.
+
+    "Modified Version" means the Package, if it has been changed, and
+    such changes were not explicitly requested by the Copyright
+    Holder. 
+
+    "Original License" means this Artistic License as Distributed with
+    the Standard Version of the Package, in its current version or as
+    it may be modified by The Perl Foundation in the future.
+
+    "Source" form means the source code, documentation source, and
+    configuration files for the Package.
+
+    "Compiled" form means the compiled bytecode, object code, binary,
+    or any other form resulting from mechanical transformation or
+    translation of the Source form.
+
+
+Permission for Use and Modification Without Distribution
+
+(1)  You are permitted to use the Standard Version and create and use
+Modified Versions for any purpose without restriction, provided that
+you do not Distribute the Modified Version.
+
+
+Permissions for Redistribution of the Standard Version
+
+(2)  You may Distribute verbatim copies of the Source form of the
+Standard Version of this Package in any medium without restriction,
+either gratis or for a Distributor Fee, provided that you duplicate
+all of the original copyright notices and associated disclaimers.  At
+your discretion, such verbatim copies may or may not include a
+Compiled form of the Package.
+
+(3)  You may apply any bug fixes, portability changes, and other
+modifications made available from the Copyright Holder.  The resulting
+Package will still be considered the Standard Version, and as such
+will be subject to the Original License.
+
+
+Distribution of Modified Versions of the Package as Source 
+
+(4)  You may Distribute your Modified Version as Source (either gratis
+or for a Distributor Fee, and with or without a Compiled form of the
+Modified Version) provided that you clearly document how it differs
+from the Standard Version, including, but not limited to, documenting
+any non-standard features, executables, or modules, and provided that
+you do at least ONE of the following:
+
+    (a)  make the Modified Version available to the Copyright Holder
+    of the Standard Version, under the Original License, so that the
+    Copyright Holder may include your modifications in the Standard
+    Version.
+
+    (b)  ensure that installation of your Modified Version does not
+    prevent the user installing or running the Standard Version. In
+    addition, the Modified Version must bear a name that is different
+    from the name of the Standard Version.
+
+    (c)  allow anyone who receives a copy of the Modified Version to
+    make the Source form of the Modified Version available to others
+    under
+		
+	(i)  the Original License or
+
+	(ii)  a license that permits the licensee to freely copy,
+	modify and redistribute the Modified Version using the same
+	licensing terms that apply to the copy that the licensee
+	received, and requires that the Source form of the Modified
+	Version, and of any works derived from it, be made freely
+	available in that license fees are prohibited but Distributor
+	Fees are allowed.
+
+
+Distribution of Compiled Forms of the Standard Version 
+or Modified Versions without the Source
+
+(5)  You may Distribute Compiled forms of the Standard Version without
+the Source, provided that you include complete instructions on how to
+get the Source of the Standard Version.  Such instructions must be
+valid at the time of your distribution.  If these instructions, at any
+time while you are carrying out such distribution, become invalid, you
+must provide new instructions on demand or cease further distribution.
+If you provide valid instructions or cease distribution within thirty
+days after you become aware that the instructions are invalid, then
+you do not forfeit any of your rights under this license.
+
+(6)  You may Distribute a Modified Version in Compiled form without
+the Source, provided that you comply with Section 4 with respect to
+the Source of the Modified Version.
+
+
+Aggregating or Linking the Package 
+
+(7)  You may aggregate the Package (either the Standard Version or
+Modified Version) with other packages and Distribute the resulting
+aggregation provided that you do not charge a licensing fee for the
+Package.  Distributor Fees are permitted, and licensing fees for other
+components in the aggregation are permitted. The terms of this license
+apply to the use and Distribution of the Standard or Modified Versions
+as included in the aggregation.
+
+(8) You are permitted to link Modified and Standard Versions with
+other works, to embed the Package in a larger work of your own, or to
+build stand-alone binary or bytecode versions of applications that
+include the Package, and Distribute the result without restriction,
+provided the result does not expose a direct interface to the Package.
+
+
+Items That are Not Considered Part of a Modified Version 
+
+(9) Works (including, but not limited to, modules and scripts) that
+merely extend or make use of the Package, do not, by themselves, cause
+the Package to be a Modified Version.  In addition, such works are not
+considered parts of the Package itself, and are not subject to the
+terms of this license.
+
+
+General Provisions
+
+(10)  Any use, modification, and distribution of the Standard or
+Modified Versions is governed by this Artistic License. By using,
+modifying or distributing the Package, you accept this license. Do not
+use, modify, or distribute the Package, if you do not accept this
+license.
+
+(11)  If your Modified Version has been derived from a Modified
+Version made by someone other than you, you are nevertheless required
+to ensure that your Modified Version complies with the requirements of
+this license.
+
+(12)  This license does not grant you the right to use any trademark,
+service mark, tradename, or logo of the Copyright Holder.
+
+(13)  This license includes the non-exclusive, worldwide,
+free-of-charge patent license to make, have made, use, offer to sell,
+sell, import and otherwise transfer the Package with respect to any
+patent claims licensable by the Copyright Holder that are necessarily
+infringed by the Package. If you institute patent litigation
+(including a cross-claim or counterclaim) against any party alleging
+that the Package constitutes direct or contributory patent
+infringement, then this Artistic License to you shall terminate on the
+date that such litigation is filed.
+
+(14)  Disclaimer of Warranty:
+THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
+IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL
+LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/nicstat/nicstat.p5m	Tue Apr 07 19:39:47 2015 -0700
@@ -0,0 +1,40 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+#
+
+<transform file path=usr.*/man/.+ -> default mangler.man.stability volatile>
+set name=pkg.fmri \
+    value=pkg:/diagnostic/[email protected]$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="nicstat - print network traffic statistics"
+set name=pkg.description \
+    value="nicstat prints out network statistics for all network cards (NICs), including packets, kilobytes per second, average packet sizes and more."
+set name=com.oracle.info.description value="the nicstat utility"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Applications/Internet
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2014/401
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+file nicstat path=usr/bin/nicstat
+file nicstat.1 path=usr/share/man/man1/nicstat.1
+license nicstat.license license=Artistic
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/nicstat/patches/001-solaris-build.patch	Tue Apr 07 19:39:47 2015 -0700
@@ -0,0 +1,14 @@
+Don't care about multi-platform support; just do enough to build nicstat.
+
+This patch will not be sent upstream.
+
+--- Makefile.Solaris.orig	2014-11-19 15:15:35.166755185 -0800
++++ Makefile.Solaris	2014-11-19 15:18:16.228283728 -0800
[email protected]@ -39,7 +39,6 @@
+ 
+ 
+ all : $(FILES)
+-	mv $? $(NATIVE_BINARY)
+ 
+ $(NATIVE_BINARY) : $(BINARY)
+ 	mv $? [email protected]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/nicstat/patches/002-adjust-man-page.patch	Tue Apr 07 19:39:47 2015 -0700
@@ -0,0 +1,80 @@
+Adjust the nicstat man page to just be Solaris specific.
+
+These changes will be passed back upstream, to see if there is a way for
+a Solaris or Linux man page can be obtained from a merged version
+
+--- nicstat.1.orig	2014-11-23 17:37:32.617985414 -0800
++++ nicstat.1	2014-11-23 17:47:12.637407628 -0800
[email protected]@ -14,7 +14,7 @@
+ 
+ .SH NAME
+ 
+-nicstat, enicstat \- print network traffic statistics
++nicstat \- print network traffic statistics
+ .\" ========================================================================
+ .SH SYNOPSIS
+ .B nicstat
[email protected]@ -23,9 +23,6 @@
+ .RI [-S int:mbps[fd|hd]]
+ .I [interval
+ .I [count]]
+-.PP
+-.B enicstat
+-\fI<same options & operands>
+ .\" ========================================================================
+ 
+ .SH DESCRIPTION
[email protected]@ -106,17 +103,7 @@
+ Show statistics for only the interface(s) listed.  Multiple interfaces
+ can be listed, separated by commas (,).
+ .TP 1i
+-.BI \-S int:speed[fd|hd]
+-(Linux only).
+-Specify the speed (and optionally duplex mode) of one or more interfaces.
+-The given speed(s) are in megabits/second.
+-The duplex mode will default to "full" unless a suffix beginning with
+-"h" or "H" is specified.
+-Speed and duplex mode are obtained automatically on Solaris using the
+-"ifspeed" and "link_duplex" kstat values.
+-.TP 1i
+ .B \-k
+-(Solaris only).
+ Search for active network interfaces by looking for kstat "link_state"
+ statistics with a value of 1.  This is only of value on systems
+ running Solaris 10 (or early releases of Solaris 11 Express), with
[email protected]@ -297,34 +284,15 @@
+ .BR netstat (1M)
+ .BR kstat (1M),
+ .BR kstat (3KSTAT),
+-.BR mibiisa (1M),
+-.BR ethtool (8)
++.BR mibiisa (1M)
+ 
+ "nicstat - the Solaris and Linux Network Monitoring Tool You Did Not Know You Needed"
+ .RI - http://blogs.oracle.com/timc/entry/nicstat_the_solaris_and_linux
+ .\" ========================================================================
+ .SH NOTES
+ .PP
+-On Linux, the NoCP, Defer, TCP InKB, and TCP OutKB statistics are
+-always reported as zero.
+-.PP
+ The way that saturation is reported is a best effort, as there is no
+ standardized naming to capture all errors related to an interface's
+ inability to receive or transmit a packet.  Monitoring %Util and
+ packet rates, along with an understanding of the specific NICs may be
+ more useful in judging whether you are nearing saturation.
+-.PP
+-The
+-.B \-S
+-option is provided for the Linux edition as nicstat requires
+-super-user privilege to obtain speed and duplex mode information for
+-interfaces.
+-If you are unable to set up nicstat as setuid-root, a script named
+-.B enicstat
+-is available, which uses the
+-.B ethtool
+-utility then calls nicstat with an
+-.B \-S
+-value.
+-.B ethtool
+-itself requires super-user privilege for this to work.