PSARC 2014/401 nicstat version 1.95
17257965 Integrate "nicstat" utility into Solaris
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/nicstat/Makefile Wed Apr 15 09:28:34 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 Wed Apr 15 09:28:34 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 Wed Apr 15 09:28:34 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/nicstat@$(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 Wed Apr 15 09:28:34 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
+@@ -39,7 +39,6 @@
+
+
+ all : $(FILES)
+- mv $? $(NATIVE_BINARY)
+
+ $(NATIVE_BINARY) : $(BINARY)
+ mv $? $@
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/nicstat/patches/002-adjust-man-page.patch Wed Apr 15 09:28:34 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
+@@ -14,7 +14,7 @@
+
+ .SH NAME
+
+-nicstat, enicstat \- print network traffic statistics
++nicstat \- print network traffic statistics
+ .\" ========================================================================
+ .SH SYNOPSIS
+ .B nicstat
+@@ -23,9 +23,6 @@
+ .RI [-S int:mbps[fd|hd]]
+ .I [interval
+ .I [count]]
+-.PP
+-.B enicstat
+-\fI<same options & operands>
+ .\" ========================================================================
+
+ .SH DESCRIPTION
+@@ -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
+@@ -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.