summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2013-03-08 22:35:20 +0000
committerIgor Pashev <pashev.igor@gmail.com>2013-03-08 22:35:20 +0000
commitf540e46d8b305b5fa425e807eabebf3180648d5c (patch)
tree6e57bc246d9f4aa5f046c0cf38ebb3dd9c7ad09d
parent86a3bfd10a9d9e78e5590e144f307eab8622873d (diff)
downloadillumos-packaging-f540e46d8b305b5fa425e807eabebf3180648d5c.tar.gz
ipadm
-rw-r--r--ipadm/debian/README.source10
-rw-r--r--ipadm/debian/changelog5
-rw-r--r--ipadm/debian/compat1
-rw-r--r--ipadm/debian/control83
-rw-r--r--ipadm/debian/copyright62
-rw-r--r--ipadm/debian/ipadm.dirs1
-rw-r--r--ipadm/debian/ipadm.install5
-rw-r--r--ipadm/debian/ipadm.manpages1
-rw-r--r--ipadm/debian/lib32ipadm1-dev.install1
-rw-r--r--ipadm/debian/lib32ipadm1.install1
-rw-r--r--ipadm/debian/libipadm1-dev.install2
-rw-r--r--ipadm/debian/libipadm1.install1
-rw-r--r--ipadm/debian/libipadm1.symbols55
-rw-r--r--ipadm/debian/patches/illumos-815-Need-ipadm-1M-manual-page.patch1270
-rw-r--r--ipadm/debian/patches/ipadm-libinetutil-prototypes.patch24
-rw-r--r--ipadm/debian/patches/ipadm-no-libxnet.patch13
-rw-r--r--ipadm/debian/patches/ipmgmtd-install.patch40
-rw-r--r--ipadm/debian/patches/libipadm-add-amd64.patch23
-rw-r--r--ipadm/debian/patches/libipadm-pointers.patch271
-rw-r--r--ipadm/debian/patches/series6
-rwxr-xr-xipadm/debian/rules110
-rw-r--r--ipadm/debian/source/format1
22 files changed, 1986 insertions, 0 deletions
diff --git a/ipadm/debian/README.source b/ipadm/debian/README.source
new file mode 100644
index 0000000..9988910
--- /dev/null
+++ b/ipadm/debian/README.source
@@ -0,0 +1,10 @@
+Real sources are in the package illumos-source-X.Y,
+where X and Y are numbers. Exact values of X and Y
+are set in Build-Depends field of debian/control as
+well as in the version string in debian/changelog,
+in a form of X.Y-1.
+
+To add a patch you need first to unpack files from
+illumos-source-X.Y using ./debian/rules unpack
+and, desirably, ./debian/rules patch
+
diff --git a/ipadm/debian/changelog b/ipadm/debian/changelog
new file mode 100644
index 0000000..2c65810
--- /dev/null
+++ b/ipadm/debian/changelog
@@ -0,0 +1,5 @@
+ipadm (2.10-1) unstable; urgency=low
+
+ * Initial release
+
+ -- Igor Pashev <pashev.igor@gmail.com> Fri, 08 Mar 2013 19:28:30 +0000
diff --git a/ipadm/debian/compat b/ipadm/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/ipadm/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/ipadm/debian/control b/ipadm/debian/control
new file mode 100644
index 0000000..ce72e8e
--- /dev/null
+++ b/ipadm/debian/control
@@ -0,0 +1,83 @@
+Source: ipadm
+Section: libs
+Priority: optional
+Maintainer: Igor Pashev <pashev.igor@gmail.com>
+Build-Depends:
+ dh-illumos,
+ gcc-multilib [illumos-amd64],
+ illumos-source-2.10,
+ libdhcpagent1-dev , lib32dhcpagent1-dev [illumos-amd64] ,
+ libdladm1-dev , lib32dladm1-dev [illumos-amd64] ,
+ libdlpi1-dev , lib32dlpi1-dev [illumos-amd64] ,
+ libinetutil1-dev , lib32inetutil1-dev [illumos-amd64] ,
+ libnvpair-dev , lib32nvpair-dev [illumos-amd64] ,
+ libscf1-dev,
+ libumem-dev,
+ quilt,
+ symlinks,
+Standards-Version: 3.9.3
+Homepage: https://www.illumos.org
+
+Package: ipadm
+Section: admin
+Priority: required
+Architecture: illumos-any
+Replaces: illumos-net-tools (<< 2.10), ipmgmtd
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: configure IP network interfaces and protocol properties
+ The ipadm command is a stable replacement for the ifconfig(1M)
+ and ndd(1M) commands. It is used to create IP interfaces and to confgure
+ IP addresses on those interfaces. It is also used to get, set or reset
+ properties on interfaces, addresses and protocols.
+
+Package: libipadm1
+Section: libs
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Architecture: illumos-any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: ipadm implementation library
+ This package contains libipadm shared library.
+ .
+ Every ipadm subcommand calls into a function in the libipadm library. There is
+ a 1-1 mapping between an ipadm subcommand invocation and a library interface.
+
+Package: libipadm1-dev
+Section: libdevel
+Architecture: illumos-any
+Provides: libipadm-dev
+Depends: libipadm1 (= ${binary:Version}), ${misc:Depends}
+Description: ipadm implementation library (development files)
+ This package contains the header files and symlinks needed
+ to compile applications that use libipadm.
+ .
+ Every ipadm subcommand calls into a function in the libipadm library. There is
+ a 1-1 mapping between an ipadm subcommand invocation and a library interface.
+
+Package: lib32ipadm1
+Section: libs
+Priority: standard
+Architecture: illumos-amd64
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: ipadm implementation library (32 bit)
+ This package contains libipadm shared library.
+ .
+ Every ipadm subcommand calls into a function in the libipadm library. There is
+ a 1-1 mapping between an ipadm subcommand invocation and a library interface.
+ .
+ This is a 32-bit version of the library.
+
+Package: lib32ipadm1-dev
+Section: libdevel
+Priority: optional
+Architecture: illumos-amd64
+Provides: lib32ipadm-dev
+Depends: lib32ipadm1 (= ${binary:Version}), libipadm1-dev (= ${binary:Version}),
+ ${misc:Depends}
+Description: ipadm implementation library (32-bit development files)
+ This package contains files needed to compile
+ 32-bit applications that use libipadm.
+ .
+ Every ipadm subcommand calls into a function in the libipadm library. There is
+ a 1-1 mapping between an ipadm subcommand invocation and a library interface.
+
diff --git a/ipadm/debian/copyright b/ipadm/debian/copyright
new file mode 100644
index 0000000..2b18913
--- /dev/null
+++ b/ipadm/debian/copyright
@@ -0,0 +1,62 @@
+Files: debian/*
+Copyright: 2012, Igor Pashev <pashev.igor@gmail.com>
+License: WTFPL-2
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+ .
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+ .
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+ .
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+ .
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
+
+Files: usr/src/lib/libinetutil/common/ifaddrlist.c
+Copyright: 1997, The Regents of the University of California.
+ 2009 Sun Microsystems, Inc.
+License: 4-clause BSD
+ Copyright (c) 1997
+ The Regents of the University of California. All rights reserved.
+ .
+ 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.
+ 3. All advertising materials mentioning features or use of this software
+ must display the following acknowledgement:
+ This product includes software developed by the Computer Systems
+ Engineering Group at Lawrence Berkeley Laboratory.
+ 4. Neither the name of the University nor of the Laboratory may be used
+ to endorse or promote products derived from this software without
+ specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+Files: *
+License: CDDL
+ Note that sources are not in this package but in the package
+ illumos-source-X.Y. Those sources are covered by Common Development
+ and Distribution License (CDDL).
+ .
+ On Dyson system, the full text of the CDDL license
+ can be found in the file `/usr/share/common-licenses/CDDL-1.0'.
+
diff --git a/ipadm/debian/ipadm.dirs b/ipadm/debian/ipadm.dirs
new file mode 100644
index 0000000..fff5070
--- /dev/null
+++ b/ipadm/debian/ipadm.dirs
@@ -0,0 +1 @@
+etc/ipadm
diff --git a/ipadm/debian/ipadm.install b/ipadm/debian/ipadm.install
new file mode 100644
index 0000000..bf6f201
--- /dev/null
+++ b/ipadm/debian/ipadm.install
@@ -0,0 +1,5 @@
+lib/inet/ipmgmtd
+lib/svc/manifest/network/network-ipmgmt.xml
+lib/svc/method/net-ipmgmt
+sbin/ipadm
+usr/sbin/ipadm
diff --git a/ipadm/debian/ipadm.manpages b/ipadm/debian/ipadm.manpages
new file mode 100644
index 0000000..68fbc8a
--- /dev/null
+++ b/ipadm/debian/ipadm.manpages
@@ -0,0 +1 @@
+usr/src/man/man1m/ipadm.1m
diff --git a/ipadm/debian/lib32ipadm1-dev.install b/ipadm/debian/lib32ipadm1-dev.install
new file mode 100644
index 0000000..682884b
--- /dev/null
+++ b/ipadm/debian/lib32ipadm1-dev.install
@@ -0,0 +1 @@
+usr/lib32/libipadm.so
diff --git a/ipadm/debian/lib32ipadm1.install b/ipadm/debian/lib32ipadm1.install
new file mode 100644
index 0000000..b3180a5
--- /dev/null
+++ b/ipadm/debian/lib32ipadm1.install
@@ -0,0 +1 @@
+lib32/libipadm.so.1
diff --git a/ipadm/debian/libipadm1-dev.install b/ipadm/debian/libipadm1-dev.install
new file mode 100644
index 0000000..8b20056
--- /dev/null
+++ b/ipadm/debian/libipadm1-dev.install
@@ -0,0 +1,2 @@
+usr/lib/*/libipadm.so
+usr/include/*.h
diff --git a/ipadm/debian/libipadm1.install b/ipadm/debian/libipadm1.install
new file mode 100644
index 0000000..5a914b2
--- /dev/null
+++ b/ipadm/debian/libipadm1.install
@@ -0,0 +1 @@
+lib/*/libipadm.so.1
diff --git a/ipadm/debian/libipadm1.symbols b/ipadm/debian/libipadm1.symbols
new file mode 100644
index 0000000..edc1405
--- /dev/null
+++ b/ipadm/debian/libipadm1.symbols
@@ -0,0 +1,55 @@
+libipadm.so.1 libipadm1 #MINVER#
+ SUNWprivate_1.1@SUNWprivate_1.1 2.10-1
+ ipadm_add_aobjname@SUNWprivate_1.1 2.10-1
+ ipadm_addr_info@SUNWprivate_1.1 2.10-1
+ ipadm_check_auth@SUNWprivate_1.1 2.10-1
+ ipadm_close@SUNWprivate_1.1 2.10-1
+ ipadm_create_addr@SUNWprivate_1.1 2.10-1
+ ipadm_create_addrobj@SUNWprivate_1.1 2.10-1
+ ipadm_create_if@SUNWprivate_1.1 2.10-1
+ ipadm_delete_addr@SUNWprivate_1.1 2.10-1
+ ipadm_delete_aobjname@SUNWprivate_1.1 2.10-1
+ ipadm_delete_if@SUNWprivate_1.1 2.10-1
+ ipadm_destroy_addrobj@SUNWprivate_1.1 2.10-1
+ ipadm_disable_addr@SUNWprivate_1.1 2.10-1
+ ipadm_disable_if@SUNWprivate_1.1 2.10-1
+ ipadm_down_addr@SUNWprivate_1.1 2.10-1
+ ipadm_enable_addr@SUNWprivate_1.1 2.10-1
+ ipadm_enable_if@SUNWprivate_1.1 2.10-1
+ ipadm_free_addr_info@SUNWprivate_1.1 2.10-1
+ ipadm_free_if_info@SUNWprivate_1.1 2.10-1
+ ipadm_get_addr@SUNWprivate_1.1 2.10-1
+ ipadm_get_addrprop@SUNWprivate_1.1 2.10-1
+ ipadm_get_aobjname@SUNWprivate_1.1 2.10-1
+ ipadm_get_ifprop@SUNWprivate_1.1 2.10-1
+ ipadm_get_prop@SUNWprivate_1.1 2.10-1
+ ipadm_if_enabled@SUNWprivate_1.1 2.10-1
+ ipadm_if_info@SUNWprivate_1.1 2.10-1
+ ipadm_if_move@SUNWprivate_1.1 2.10-1
+ ipadm_init_net_from_gz@SUNWprivate_1.1 2.10-1
+ ipadm_legacy2new_propname@SUNWprivate_1.1 2.10-1
+ ipadm_ndpd_read@SUNWprivate_1.1 2.10-1
+ ipadm_ndpd_write@SUNWprivate_1.1 2.10-1
+ ipadm_new2legacy_propname@SUNWprivate_1.1 2.10-1
+ ipadm_nvlist2str@SUNWprivate_1.1 2.10-1
+ ipadm_open@SUNWprivate_1.1 2.10-1
+ ipadm_open_arp_on_udp@SUNWprivate_1.1 2.10-1
+ ipadm_proto2str@SUNWprivate_1.1 2.10-1
+ ipadm_refresh_addr@SUNWprivate_1.1 2.10-1
+ ipadm_rw_db@SUNWprivate_1.1 2.10-1
+ ipadm_set_addr@SUNWprivate_1.1 2.10-1
+ ipadm_set_addrprop@SUNWprivate_1.1 2.10-1
+ ipadm_set_dst_addr@SUNWprivate_1.1 2.10-1
+ ipadm_set_ifprop@SUNWprivate_1.1 2.10-1
+ ipadm_set_interface_id@SUNWprivate_1.1 2.10-1
+ ipadm_set_primary@SUNWprivate_1.1 2.10-1
+ ipadm_set_prop@SUNWprivate_1.1 2.10-1
+ ipadm_set_stateful@SUNWprivate_1.1 2.10-1
+ ipadm_set_stateless@SUNWprivate_1.1 2.10-1
+ ipadm_set_wait_time@SUNWprivate_1.1 2.10-1
+ ipadm_status2str@SUNWprivate_1.1 2.10-1
+ ipadm_str2nvlist@SUNWprivate_1.1 2.10-1
+ ipadm_str2proto@SUNWprivate_1.1 2.10-1
+ ipadm_up_addr@SUNWprivate_1.1 2.10-1
+ ipadm_walk_prop@SUNWprivate_1.1 2.10-1
+ ipadm_walk_proptbl@SUNWprivate_1.1 2.10-1
diff --git a/ipadm/debian/patches/illumos-815-Need-ipadm-1M-manual-page.patch b/ipadm/debian/patches/illumos-815-Need-ipadm-1M-manual-page.patch
new file mode 100644
index 0000000..b82bb81
--- /dev/null
+++ b/ipadm/debian/patches/illumos-815-Need-ipadm-1M-manual-page.patch
@@ -0,0 +1,1270 @@
+From aec3cf542eb81ffe3fe027b69143a82fdc7810cd Mon Sep 17 00:00:00 2001
+From: Jerry Jelinek <jerry.jelinek@joyent.com>
+Date: Thu, 28 Feb 2013 13:02:24 -0800
+Subject: [PATCH] 815 Need ipadm(1M) manual page Reviewed by: Albert Lee
+ <trisk@nexenta.com> Reviewed by: Carlos Cardenas
+ <cardenas12@gmail.com> Reviewed by: Dan Kimmel
+ <dan.kimmel@delphix.com> Reviewed by: Christopher Siden
+ <christopher.siden@delphix.com> Reviewed by: Adam Leventhal
+ <ahl@delphix.com> Approved by: Dan McDonald
+ <danmcd@nexenta.com>
+
+---
+ usr/src/man/man1m/ipadm.1m | 1245 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 1245 insertions(+)
+ create mode 100644 usr/src/man/man1m/ipadm.1m
+
+diff --git a/usr/src/man/man1m/ipadm.1m b/usr/src/man/man1m/ipadm.1m
+new file mode 100644
+index 0000000..c3fe9f1
+--- /dev/null
++++ b/usr/src/man/man1m/ipadm.1m
+@@ -0,0 +1,1245 @@
++'\" te
++.\" Copyright (c) 2012, Joyent, Inc. All Rights Reserved
++.\" 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]
++.TH IPADM 1M "May 14, 2012"
++.SH NAME
++ipadm \- configure IP network interfaces and protocol properties.
++.SH SYNOPSIS
++.LP
++.nf
++\fBipadm\fR create-if [\fB-t\fR] \fIinterface\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR disable-if [\fB-t\fR] \fIinterface\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR enable-if [\fB-t\fR] \fIinterface\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR delete-if \fIinterface\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR show-if [[\fB-p\fR] \fB-o\fR \fIfield\fR[,...]] [\fIinterface\fR]
++.fi
++
++.LP
++.nf
++\fBipadm\fR set-ifprop [\fB-t\fR] \fB-p\fR \fIprop\fR=<\fIvalue\fR[,...]> \fB-m\fR \fIprotocol\fR \fIinterface\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR reset-ifprop [\fB-t\fR] \fB-p\fR \fIprop\fR \fB-m\fR \fIprotocol\fR \fIinterface\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR show-ifprop [[\fB-c\fR]\fB-o\fR \fIfield\fR[,...]] [\fB-p\fR \fIprop\fR,...] [\fB-m\fR \fIprotocol\fR]
++ [\fIinterface\fR]
++.fi
++
++.LP
++.nf
++\fBipadm\fR create-addr [\fB-t\fR] \fB-T\fR static [\fB-d\fR]
++ \fB-a\fR {local|remote}=\fIaddr\fR[/\fIprefixlen\fR],... \fIaddrobj\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR create-addr [\fB-t\fR] \fB-T\fR dhcp [\fB-w\fR \fIseconds\fR | forever ] \fIaddrobj\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR create-addr [\fB-t\fR] \fB-T\fR addrconf [\fB-i\fR \fIinterface-id\fR]
++ [\fB-p\fR {stateful|stateless}={yes|no},..] \fIaddrobj\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR down-addr [\fB-t\fR] \fIaddrobj\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR up-addr [\fB-t\fR] \fIaddrobj\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR disable-addr [\fB-t\fR] \fIaddrobj\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR enable-addr [\fB-t\fR] \fIaddrobj\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR refresh-addr [\fB-i\fR] \fIaddrobj\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR delete-addr [\fB-r\fR] \fIaddrobj\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR show-addr [[\fB-p\fR] \fB-o\fR \fIfield\fR[,...]] [\fIaddrobj\fR]
++.fi
++
++.LP
++.nf
++\fBipadm\fR set-addrprop [\fB-t\fR] \fB-p\fR \fIprop\fR=<\fIvalue\fR[,...]> \fIaddrobj\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR reset-addrprop [\fB-t\fR] \fB-p\fR \fIprop\fR=<\fIvalue\fR[,...]> \fIaddrobj\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR show-addrprop [[\fB-c\fR] \fB-o\fR \fIfield\fR[,...]] [\fB-p\fR \fIprop\fR,...] [\fIaddrobj\fR]
++.fi
++
++.LP
++.nf
++\fBipadm\fR set-prop [\fB-t\fR] \fB-p\fR \fIprop\fR[+|-]=<\fIvalue\fR[,...]> \fIprotocol\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR reset-prop [\fB-t\fR] \fB-p\fR \fIprop\fR \fIprotocol\fR
++.fi
++
++.LP
++.nf
++\fBipadm\fR show-prop [[\fB-c\fR] \fB-o\fR \fIfield\fR[,...]] [\fB-p\fR \fIprop\fR[,...]] [\fIprotocol\fR]
++.fi
++
++.SH DESCRIPTION
++.sp
++.LP
++
++The \fBipadm\fR command is a stable replacement for the \fBifconfig\fR(1M) and
++\fBndd\fR(1M) commands. It is used to create IP interfaces and to confgure IP
++addresses on those interfaces. It is also used to get, set or reset properties
++on interfaces, addresses and protocols.
++.LP
++For subcommands that take an \fIaddrobj\fR, the \fIaddrobj\fR specifies a
++unique address on the system. It is made up of two parts, delimited by a '/'.
++The first part is the name of the interface and the second part is a string up
++to 32 characters long. For example, "lo0/v4" is a loopback interface
++addrobj name.
++.LP
++For subcommands that take a \fIprotocol\fR, this can be one of
++the following values: ip, ipv4, ipv6, icmp, tcp, sctp or udp.
++
++.SH SUBCOMMANDS
++.sp
++.LP
++The following subcommands are supported:
++.sp
++.ne 2
++.na
++\fB\fBcreate-if\fR [\fB-t\fR] \fIinterface\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBcreate-if\fR subcommand is used to create an IP interface that will
++handle both IPv4 and IPv6 packets. The interface will be enabled as part of
++the creation process. The IPv4 interface will have the address 0.0.0.0.
++The IPv6 interface will have the adress ::.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the creation is temporary and will not be persistent across reboots.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBdisable-if\fR [\fB-t\fR] \fIinterface\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBdisable-if\fR subcommand is used to disable an IP interface.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the disable is temporary and will not be persistent across reboots.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBenable-if\fR [\fB-t\fR] \fIinterface\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBenable-if\fR subcommand is used to enable an IP interface.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the enable is temporary and will not be persistent across reboots.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fbdelete-if\fR \fIinterface\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBdelete-if\fR subcommand is used to permanently delete an IP interface.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBshow-if\fR [[\fB-p\fR] \fB-o\fR \fIfield\fR[,...]] [\fIinterface\fR]\fR
++.ad
++.sp .6
++.RS 4n
++The \fBshow-if\fR subcommand is used to show the current IP interface
++configuration.
++.sp
++The \fB-p\fR option (also \fB--parsable\fR) prints
++the output in a parsable format.
++.sp
++The \fB-o\fR option (also \fB--output\fR) is used
++to select which fields will be shown. The field value can be one of the
++following names:
++.sp
++.ne 2
++.na
++.RS 4n
++\fBALL\fR
++.ad
++.RS 4n
++Display all fields
++.RE
++
++.sp
++.ne 2
++.na
++\fBIFNAME\fR
++.ad
++.RS 4n
++The name of the interface
++.RE
++
++.sp
++.ne 2
++.na
++\fBSTATE\fR
++.ad
++.RS 4n
++The state can be one of the following values:
++.sp
++.ne 2
++.na
++.RS 4n
++ok - resources for the interface have been allocated
++.sp
++offline - the interface is offline
++.sp
++failed - the interface's datalink is down
++.sp
++down - the interface is down
++.sp
++disabled - the interface is disabled
++.RE
++.RE
++
++.sp
++.ne 2
++.na
++\fBCURRENT\fR
++.ad
++.RS 4n
++A set of single character flags indicating the following:
++.sp
++.ne 2
++.na
++.RS 4n
++b - broadcast (mutually exclusive with 'p')
++.br
++m - multicast
++.br
++p - point-to-point (mutually exclusive with 'b')
++.br
++v - virtual interface
++.br
++I - IPMP
++.br
++s - IPMP standby
++.br
++i - IPMP inactive
++.br
++V - VRRP
++.br
++a - VRRP accept mode
++.br
++4 - IPv4
++.br
++6 - IPv6
++.RE
++.RE
++
++.sp
++.ne 2
++.na
++\fBPERSISTENT\fR
++.ad
++.RS 4n
++A set of single character flags showing what configuration will be used the
++next time the interface is enabled:
++.sp
++.ne 2
++.na
++.RS 4n
++s - IPMP standby
++.br
++4 - IPv4
++.br
++6 - IPv6
++.RE
++.RE
++.RE
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBset-ifprop\fR [\fB-t\fR] \fB-p\fR \fIprop\fR=<\fIvalue\fR[,...]> \fB-m\fR \fIprotocol\fR \fIinterface\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBset-ifprop\fR subcommand is used to set a property's value(s) on the IP
++interface.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the setting is temporary and will not be persistent across reboots.
++.sp
++The \fB-p\fR option (also \fB--prop\fR) specifies the property name and
++value(s). The property name can be one of the following:
++.sp
++.ne 2
++.na
++
++.RS 4n
++
++\fBarp\fR
++.ad
++.RS 4n
++Enables ("on") or disables ("off") ARP.
++.RE
++
++.sp
++.ne 2
++.na
++\fBexchange_routes\fR
++.ad
++.RS 4n
++Enables ("on") or disables ("off") the exchange of routing data.
++.RE
++
++.sp
++.ne 2
++.na
++\fBforwarding\fR
++.ad
++.RS 4n
++Enables ("on") or disables ("off") IP forwarding.
++.RE
++
++.sp
++.ne 2
++.na
++\fBmetric\fR
++.ad
++.RS 4n
++Set the routing metric to the numeric value. The value is treated as extra
++hops to the destination.
++.RE
++
++.sp
++.ne 2
++.na
++\fBmtu\fR
++.ad
++.RS 4n
++Set the maximum transmission unit to the numeric value.
++.RE
++
++.sp
++.ne 2
++.na
++\fBnud\fR
++.ad
++.RS 4n
++Enables ("on") or disables ("off") neighbor unreachability detection.
++.RE
++
++.sp
++.ne 2
++.na
++\fBusesrc\fR
++.ad
++.RS 4n
++Indicates which interface to use for source address selection. A value
++"none" may also be used.
++.RE
++.RE
++
++.sp
++The \fB-m\fR option (also \fB--module\fR) specifies which protocol
++the setting applies to.
++.sp
++
++.RE
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBreset-ifprop\fR [\fB-t\fR] \fB-p\fR \fIprop\fR \fB-m\fR \fIprotocol\fR \fIinterface\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBreset-ifprop\fR subcommand is used to reset an IP interface's property
++value to the default.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the disable is temporary and will not be persistent across reboots.
++.sp
++The \fB-p\fR option (also \fB--prop\fR) specifies the property name.
++See the \fBset-ifprop\fR subcommand for the list of property names.
++.sp
++The \fB-m\fR option (also \fB--module\fR) specifies which protocol
++the setting applies to.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBshow-ifprop\fR [[\fB-c\fR]\fB-o\fR \fIfield\fR[,...]] [\fB-p\fR \fIprop\fR,...] [\fB-m\fR \fIprotocol\fR]
++ [\fIinterface\fR]\fR
++.ad
++.sp .6
++.RS 4n
++The \fBshow-ifprop\fR subcommand is used to display the property values
++for one or all of the IP interfaces.
++.sp
++The \fB-c\fR option (also \fB--parsable\fR) prints
++the output in a parsable format.
++.sp
++The \fB-o\fR option (also \fB--output\fR) is used
++to select which fields will be shown. The field value can be one of the
++following names:
++.sp
++.ne 2
++.na
++.RS 4n
++\fBALL\fR
++.ad
++.RS 4n
++Display all fields
++.RE
++
++.sp
++.ne 2
++.na
++\fBIFNAME\fR
++.ad
++.RS 4n
++The name of the interface
++.RE
++
++.sp
++.ne 2
++.na
++\fBPROPERTY\fR
++.ad
++.RS 4n
++The name of the property
++.RE
++
++.sp
++.ne 2
++.na
++\fBPROTO\fR
++.ad
++.RS 4n
++The name of the protocol
++.RE
++
++.sp
++.ne 2
++.na
++\fBPERM\fR
++.ad
++.RS 4n
++If the property is readable ("r") and/or writable ("w").
++.RE
++
++.sp
++.ne 2
++.na
++\fBCURRENT\fR
++.ad
++.RS 4n
++The value of the property
++.RE
++
++.sp
++.ne 2
++.na
++\fBPERSISTENT\fR
++.ad
++.RS 4n
++The persistent value of the property
++.RE
++
++.sp
++.ne 2
++.na
++\fBDEFAULT\fR
++.ad
++.RS 4n
++The default value of the property
++.RE
++
++.sp
++.ne 2
++.na
++\fBPOSSIBLE\fR
++.ad
++.RS 4n
++The possible values for the property
++.RE
++.RE
++
++.sp
++The \fB-p\fR option (also \fB--prop\fR) is used
++to specify which properties to display. See the \fBset-ifprop\fR
++subcommand for the list of property names.
++.sp
++The \fB-m\fR option (also \fB--module\fR) specifies which protocol
++to display.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBcreate-addr\fR [\fB-t\fR] \fB-T\fR static [\fB-d\fR] \\
++ \fB-a\fR {local|remote}=\fIaddr\fR[/\fIprefixlen\fR],... \fIaddrobj\fR\fR
++.br
++\fB\fBcreate-addr\fR [\fB-t\fR] \fB-T\fR dhcp [\fB-w\fR \fIseconds\fR | forever ] \fIaddrobj\fR\fR
++.br
++\fB\fBcreate-addr\fR [\fB-t\fR] \fB-T\fR addrconf [\fB-i\fR \fIinterface-id\fR] \\
++ [\fB-p\fR {stateful|stateless}={yes|no},..] \fIaddrobj\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBcreate-addr\fR subcommand is used to set an address on an IP interface.
++The address will be enabled but can disabled using the \fBdisable-addr\fR
++subcommand. This subcommand has three different forms, depending on the
++value of the \fB-T\fR option.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the address is temporary and will not be persistent across reboots.
++.sp
++The \fB-T\fR static option creates a static addrobj. This takes the following
++options:
++.RS 4n
++
++The \fB-d\fR option (also \fB--down\fR) means the address is down.
++.sp
++The \fB-a\fR option (also \fB--address\fR) specifies the address.
++The "local" or "remote" prefix can be used for a point-to-point interface.
++In this case, both addresses must be given.
++Otherwise, the equal sign ("=") should be omitted and the address should be
++provided by itself and with no second address.
++.sp
++
++.RE
++
++The \fB-T\fR dhcp option causes the address to be obtained via DHCP.
++This takes the following options:
++.RS 4n
++
++The \fB-w\fR option (also \fB--wait\fR) gives the time, in seconds,
++that the command should wait to obtain an address.
++.sp
++
++.RE
++
++The \fB-T\fR addrconf option creates an auto-configured address.
++This takes the following options:
++.RS 4n
++
++The \fB-i\fR option (also \fB--interface-id\fR) gives the interface ID to
++be used.
++.sp
++The \fB-p\fR option (also \fB--prop\fR) indicates which method of
++auto-configuration should be used.
++.sp
++
++.RE
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBdown-addr\fR [\fB-t\fR] \fIaddrobj\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBdown-addr\fR subcommand is used to down the address. This will
++stop packets from being sent or received.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the down is temporary and will not be persistent across reboots.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBup-addr\fR [\fB-t\fR] \fIaddrobj\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBup-addr\fR subcommand is used to up the address. This will
++enable packets to be sent and received.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the up is temporary and will not be persistent across reboots.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBdisable-addr\fR [\fB-t\fR] \fIaddrobj\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBdisable-addr\fR subcommand is used to disable the address.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the disable is temporary and will not be persistent across reboots.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBenable-addr\fR [\fB-t\fR] \fIaddrobj\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBenable-addr\fR subcommand is used to enable the address.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the enable is temporary and will not be persistent across reboots.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBrefresh-addr\fR [\fB-i\fR] \fIaddrobj\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBrefresh-addr\fR subcommand is used to extend the lease for DHCP
++addresses. It also restarts duplicate address detection for Static addresses.
++.sp
++The \fB-i\fR option (also \fB--inform\fR) means
++that the network configuration will be obtained from DHCP without taking
++a lease on the address.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBdelete-addr\fR [\fB-r\fR] \fIaddrobj\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBdelete-addr\fR subcommand deletes the given address.
++.sp
++The \fB-r\fR option (also \fB--release\fR) is used for DHCP-assigned
++addresses to indicate that the address should be released.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBshow-addr\fR [[\fB-p\fR] \fB-o\fR \fIfield\fR[,...]] [\fIaddrobj\fR]\fR
++.ad
++.sp .6
++.RS 4n
++The \fBshow-addr\fR subcommand is used to show the current address properties.
++.sp
++The \fB-p\fR option (also \fB--parsable\fR) prints
++the output in a parsable format.
++.sp
++The \fB-o\fR option (also \fB--output\fR) is used
++to select which fields will be shown. The field value can be one of the
++following names:
++.sp
++.ne 2
++.na
++.RS 4n
++\fBALL\fR
++.ad
++.RS 4n
++Display all fields
++.RE
++
++.sp
++.ne 2
++.na
++\fBADDROBJ\fR
++.ad
++.RS 4n
++The name of the address
++.RE
++
++.sp
++.ne 2
++.na
++\fBTYPE\fR
++.ad
++.RS 4n
++The type of the address. It can be "static", "dhcp" or "addrconf".
++.RE
++
++.sp
++.ne 2
++.na
++\fBSTATE\fR
++.ad
++.RS 4n
++The state of the address. It can be one of the following values:
++.sp
++.ne 2
++.na
++.RS 4n
++disabled s see the \fBdisable-addr\fR subcommand
++.sp
++down - see the \fBdown-addr\fR subcommand
++.sp
++duplicate - the address is a duplicate
++.sp
++inaccessible - the interface for this address has failed
++.sp
++ok - the address is up
++.sp
++tentative - duplicate address detection in progress
++.RE
++.RE
++
++.sp
++.ne 2
++.na
++\fBCURRENT\fR
++.ad
++.RS 4n
++A set of single character flags indicating the following:
++.sp
++.ne 2
++.na
++.RS 4n
++U - up
++.br
++u - unnumbered (matches another local address)
++.br
++p - private, not advertised to routing
++.br
++t - temporary IPv6 address
++.br
++d - deprecated (not used for outgoing packets)
++.RE
++.RE
++
++.sp
++.ne 2
++.na
++\fBPERSISTENT\fR
++.ad
++.RS 4n
++A set of single character flags showing the configuration which will be used
++when the address is enabled.
++.sp
++.ne 2
++.na
++.RS 4n
++U - up
++.br
++p - private, not advertised to routing
++.br
++d - deprecated (not used for outgoing packets)
++.RE
++.RE
++
++.sp
++.ne 2
++.na
++\fBADDR\fR
++.ad
++.RS 4n
++The address
++.RE
++.RE
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBset-addrprop\fR [\fB-t\fR] \fB-p\fR \fIprop\fR=<\fIvalue\fR[,...]> \fIaddrobj\fR
++.ad
++.sp .6
++.RS 4n
++The \fBset-addrprop\fR subcommand is used to set a property's value(s) on the
++addrobj.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the setting is temporary and will not be persistent across reboots.
++.sp
++The \fB-p\fR option (also \fB--prop\fR) specifies the property name and
++value(s). The property name can be one of the following:
++.sp
++.ne 2
++.na
++
++.RS 4n
++
++\fBbroadcast\fR
++.ad
++.RS 4n
++The broadcast address (read-only)
++.RE
++
++.sp
++.ne 2
++.na
++\fBdeprecated\fR
++.ad
++.RS 4n
++The address should not be used to send packets but can still receive packets.
++Can be "on" or "off".
++.RE
++
++.sp
++.ne 2
++.na
++\fBprefixlen\fR
++.ad
++.RS 4n
++The number of bits in the IPv4 netmask or IPv6 prefix.
++.RE
++
++.sp
++.ne 2
++.na
++\fBprivate\fR
++.ad
++.RS 4n
++The address is not advertised to routing.
++Can be "on" or "off".
++.RE
++
++.sp
++.ne 2
++.na
++\fBtransmit\fR
++.ad
++.RS 4n
++Packets can be transmitted.
++Can be "on" or "off".
++.RE
++
++.sp
++.ne 2
++.na
++\fBzone\fR
++.ad
++.RS 4n
++The zone the addrobj is in.
++.RE
++
++.RE
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBreset-addrprop\fR [\fB-t\fR] \fB-p\fR \fIprop\fR \fIaddrobj\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBreset-addrprop\fR subcommand is used to reset an addrobj's property
++value to the default.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the disable is temporary and will not be persistent across reboots.
++.sp
++The \fB-p\fR option (also \fB--prop\fR) specifies the property name.
++See the \fBset-addrprop\fR subcommand for the list of property names.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBshow-addrprop\fR [[\fB-c\fR]\fB-o\fR \fIfield\fR[,...]] [\fB-p\fR \fIprop\fR,...] \fIaddrobj\fR]
++.ad
++.sp .6
++.RS 4n
++The \fBshow-addrprop\fR subcommand is used to display the property values
++for one or all of the addrobjs.
++.sp
++The \fB-c\fR option (also \fB--parsable\fR) prints
++the output in a parsable format.
++.sp
++The \fB-o\fR option (also \fB--output\fR) is used
++to select which fields will be shown. The field value can be one of the
++following names:
++.sp
++.ne 2
++.na
++.RS 4n
++\fBALL\fR
++.ad
++.RS 4n
++Display all fields
++.RE
++
++.sp
++.ne 2
++.na
++\fBADDROBJ\fR
++.ad
++.RS 4n
++The name of the addrobj
++.RE
++
++.sp
++.ne 2
++.na
++\fBPROPERTY\fR
++.ad
++.RS 4n
++The name of the property
++.RE
++
++.sp
++.ne 2
++.na
++\fBPERM\fR
++.ad
++.RS 4n
++If the property is readable ("r") and/or writable ("w").
++.RE
++
++.sp
++.ne 2
++.na
++\fBCURRENT\fR
++.ad
++.RS 4n
++The value of the property
++.RE
++
++.sp
++.ne 2
++.na
++\fBPERSISTENT\fR
++.ad
++.RS 4n
++The persistent value of the property
++.RE
++
++.sp
++.ne 2
++.na
++\fBDEFAULT\fR
++.ad
++.RS 4n
++The default value of the property
++.RE
++
++.sp
++.ne 2
++.na
++\fBPOSSIBLE\fR
++.ad
++.RS 4n
++The possible values for the property
++.RE
++.RE
++
++.sp
++The \fB-p\fR option (also \fB--prop\fR) is used
++to specify which properties to display. See the \fBset-addrprop\fR
++subcommand for the list of property names.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBset-prop\fR [\fB-t\fR] \fB-p\fR \fIprop\fR[+|-]=<\fIvalue\fR[,...]> \fIprotocol\fR
++.ad
++.sp .6
++.RS 4n
++The \fBset-prop\fR subcommand is used to set a property's value(s) on the
++protocol.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the setting is temporary and will not be persistent across reboots.
++.sp
++The \fB-p\fR option (also \fB--prop\fR) specifies the property name and
++value(s). The optional [+|-] syntax can be used to add/remove values from the
++current list of values on the property.
++The property name can be one of the following:
++.sp
++.ne 2
++.na
++
++.RS 4n
++
++\fBecn\fR
++.ad
++.RS 4n
++Explicit congestion control (TCP-only)
++Can be "never", "passive" or "active".
++.RE
++
++\fBextra_priv_ports\fR
++.ad
++.RS 4n
++Additional privileged ports (SCTP, TCP or UDP)
++.RE
++
++\fBforwarding\fR
++.ad
++.RS 4n
++Packet forwarding is enabled.
++Can be "on" or "off".
++.RE
++
++\fBhoplimit\fR
++.ad
++.RS 4n
++The IPv6 hoplimit.
++.RE
++
++\fBlargest_anon_port\fR
++.ad
++.RS 4n
++Largest ephemeral port (SCTP, TCP or UDP)
++.RE
++
++\fBrecv_maxbuf\fR
++.ad
++.RS 4n
++Receive buffer size (ICMP, SCTP, TCP or UDP)
++.RE
++
++\fBsack\fR
++.ad
++.RS 4n
++Selective acknowledgement (TCP).
++Can be "active", "passive" or "never".
++.RE
++
++\fBsend_maxbuf\fR
++.ad
++.RS 4n
++Send buffer size (ICMP, SCTP, TCP or UDP)
++.RE
++
++\fBsmallest_anon_port\fR
++.ad
++.RS 4n
++Smallest ephemeral port (SCTP, TCP or UDP)
++.RE
++
++\fBsmallest_nonpriv_port\fR
++.ad
++.RS 4n
++Smallest non-privileged port (SCTP, TCP or UDP)
++.RE
++
++\fBttl\fR
++.ad
++.RS 4n
++The IPv4 time-to-live.
++.RE
++
++.RE
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBreset-prop\fR [\fB-t\fR] \fB-p\fR \fIprop\fR \fIprotocol\fR\fR
++.ad
++.sp .6
++.RS 4n
++The \fBreset-prop\fR subcommand is used to reset a protocol's property
++value to the default.
++.sp
++The \fB-t\fR option (also \fB--temporary\fR) means
++that the disable is temporary and will not be persistent across reboots.
++.sp
++The \fB-p\fR option (also \fB--prop\fR) specifies the property name.
++See the \fBset-prop\fR subcommand for the list of property names.
++.sp
++
++.RE
++
++.sp
++.ne 2
++.na
++\fB\fBshow-prop\fR [[\fB-c\fR]\fB-o\fR \fIfield\fR[,...]] [\fB-p\fR \fIprop\fR,...] \fIprotocol\fR]
++.ad
++.sp .6
++.RS 4n
++The \fBshow-prop\fR subcommand is used to display the property values
++for one or all of the protocols.
++.sp
++The \fB-c\fR option (also \fB--parsable\fR) prints
++the output in a parsable format.
++.sp
++The \fB-o\fR option (also \fB--output\fR) is used
++to select which fields will be shown. The field value can be one of the
++following names:
++.sp
++.ne 2
++.na
++.RS 4n
++\fBALL\fR
++.ad
++.RS 4n
++Display all fields
++.RE
++
++.sp
++.ne 2
++.na
++\fBPROTO\fR
++.ad
++.RS 4n
++The name of the protocol
++.RE
++
++.sp
++.ne 2
++.na
++\fBPROPERTY\fR
++.ad
++.RS 4n
++The name of the property
++.RE
++
++.sp
++.ne 2
++.na
++\fBPERM\fR
++.ad
++.RS 4n
++If the property is readable ("r") and/or writable ("w").
++.RE
++
++.sp
++.ne 2
++.na
++\fBCURRENT\fR
++.ad
++.RS 4n
++The value of the property
++.RE
++
++.sp
++.ne 2
++.na
++\fBPERSISTENT\fR
++.ad
++.RS 4n
++The persistent value of the property
++.RE
++
++.sp
++.ne 2
++.na
++\fBDEFAULT\fR
++.ad
++.RS 4n
++The default value of the property
++.RE
++
++.sp
++.ne 2
++.na
++\fBPOSSIBLE\fR
++.ad
++.RS 4n
++The possible values for the property
++.RE
++.RE
++
++.sp
++The \fB-p\fR option (also \fB--prop\fR) is used
++to specify which properties to display. See the \fBset-prop\fR
++subcommand for the list of property names.
++.sp
++
++.RE
++
++.SH SEE ALSO
++.sp
++.LP
++\fBifconfig\fR(1M), \fBdladm\fR(1M), \fBndd\fR(1M), \fBzonecfg\fR(1M),
++\fBarp\fR(1M), \fBcfgadm\fR(1M), \fBif_mpadm\fR(1M), \fBnsswitch.conf\fR(4),
++and \fBdhcp\fR(5).
+--
+1.7.12.4
+
diff --git a/ipadm/debian/patches/ipadm-libinetutil-prototypes.patch b/ipadm/debian/patches/ipadm-libinetutil-prototypes.patch
new file mode 100644
index 0000000..248ba41
--- /dev/null
+++ b/ipadm/debian/patches/ipadm-libinetutil-prototypes.patch
@@ -0,0 +1,24 @@
+Description: function prototypes defined in /usr/include/ofmt.h
+ from libinetutil-dev use size_t
+Index: ipadm/usr/src/cmd/cmd-inet/usr.sbin/ipadm/ipadm.c
+===================================================================
+--- ipadm.orig/usr/src/cmd/cmd-inet/usr.sbin/ipadm/ipadm.c 2012-10-08 00:25:23.000000000 +0000
++++ ipadm/usr/src/cmd/cmd-inet/usr.sbin/ipadm/ipadm.c 2013-03-08 21:09:12.181003531 +0000
+@@ -1629,7 +1629,7 @@
+ }
+
+ static boolean_t
+-print_sa_cb(ofmt_arg_t *ofarg, char *buf, uint_t bufsize)
++print_sa_cb(ofmt_arg_t *ofarg, char *buf, size_t bufsize)
+ {
+ show_addr_args_t *arg = ofarg->ofmt_cbarg;
+ ipadm_addr_info_t *ainfo = arg->sa_info;
+@@ -1874,7 +1874,7 @@
+ }
+
+ static boolean_t
+-print_si_cb(ofmt_arg_t *ofarg, char *buf, uint_t bufsize)
++print_si_cb(ofmt_arg_t *ofarg, char *buf, size_t bufsize)
+ {
+ show_if_args_t *arg = ofarg->ofmt_cbarg;
+ ipadm_if_info_t *ifinfo = arg->si_info;
diff --git a/ipadm/debian/patches/ipadm-no-libxnet.patch b/ipadm/debian/patches/ipadm-no-libxnet.patch
new file mode 100644
index 0000000..038f05f
--- /dev/null
+++ b/ipadm/debian/patches/ipadm-no-libxnet.patch
@@ -0,0 +1,13 @@
+Index: ipadm/usr/src/cmd/cmd-inet/usr.sbin/ipadm/Makefile
+===================================================================
+--- ipadm.orig/usr/src/cmd/cmd-inet/usr.sbin/ipadm/Makefile 2012-10-08 00:25:23.000000000 +0000
++++ ipadm/usr/src/cmd/cmd-inet/usr.sbin/ipadm/Makefile 2013-03-08 21:10:37.364194145 +0000
+@@ -51,7 +51,7 @@
+ # be accessed by -lxnet. In addition -lsocket is used to capture new
+ # not-yet-standard interfaces. Someday -lxnet alone should be enough when IPv6
+ # inspired new interfaces are part of standards.
+-LDLIBS += -lxnet -lsocket
++LDLIBS += -lsocket
+
+ # these #defines are required to use UNIX 98 interfaces
+ _D_UNIX98_EXTN= -D_XOPEN_SOURCE=500 -D__EXTENSIONS__
diff --git a/ipadm/debian/patches/ipmgmtd-install.patch b/ipadm/debian/patches/ipmgmtd-install.patch
new file mode 100644
index 0000000..7177197
--- /dev/null
+++ b/ipadm/debian/patches/ipmgmtd-install.patch
@@ -0,0 +1,40 @@
+Index: ipadm/usr/src/cmd/cmd-inet/lib/ipmgmtd/Makefile
+===================================================================
+--- ipadm.orig/usr/src/cmd/cmd-inet/lib/ipmgmtd/Makefile 2012-10-08 00:25:23.000000000 +0000
++++ ipadm/usr/src/cmd/cmd-inet/lib/ipmgmtd/Makefile 2013-03-08 21:26:55.758288528 +0000
+@@ -21,9 +21,6 @@
+ # Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ #
+
+-# Needed for ROOTFS_LIBDIR definition
+-include ../../../../lib/Makefile.lib
+-
+ PROG= ipmgmtd
+ OBJS= ipmgmt_main.o ipmgmt_door.o ipmgmt_persist.o ipmgmt_util.o
+ SRCS= $(OBJS:.o=.c)
+@@ -45,7 +42,7 @@
+ $(ROOTCFGFILES) := GROUP= sys
+ $(ROOTCFGFILES) := FILEMODE= 644
+
+-ROOTCMDDIR= $(ROOTFS_LIBDIR)/inet
++ROOTCMDDIR= $(ROOT)/lib/inet
+
+ LDLIBS += -lipadm -lnvpair -lsecdb -lnsl -lumem -lscf
+
+@@ -73,6 +70,7 @@
+ $(CSTYLE) -cpP $(SRCS) $(HEADERS)
+
+ $(ROOTCMD): $(PROG)
++ $(INS.file)
+
+ clean:
+ $(RM) $(OBJS)
+@@ -82,7 +80,7 @@
+ $(ROOTCFGDIR):
+ $(INS.dir)
+
+-$(ROOTCFGDIR)/%: $(ROOTCFGDIR) %
++$(ROOTCFGDIR)/%: %
+ $(INS.file)
+
+ include ../../../Makefile.targ
diff --git a/ipadm/debian/patches/libipadm-add-amd64.patch b/ipadm/debian/patches/libipadm-add-amd64.patch
new file mode 100644
index 0000000..67a219c
--- /dev/null
+++ b/ipadm/debian/patches/libipadm-add-amd64.patch
@@ -0,0 +1,23 @@
+Description: build 64-bit library (amd64)
+Index: ipadm/usr/src/lib/libipadm/Makefile
+===================================================================
+--- ipadm.orig/usr/src/lib/libipadm/Makefile 2012-10-08 00:25:39.000000000 +0000
++++ ipadm/usr/src/lib/libipadm/Makefile 2013-03-08 19:42:22.659256265 +0000
+@@ -29,6 +29,7 @@
+ HDRS = libipadm.h ipadm_ndpd.h ipadm_ipmgmt.h
+ HDRDIR = common
+ SUBDIRS = $(MACH)
++$(BUILD64)SUBDIRS += $(MACH64)
+ POFILE = libipadm.po
+ MSGFILES = common/libipadm.c common/ipadm_prop.c common/ipadm_persist.c \
+ common/ipadm_addr.c common/ipadm_if.c common/ipadm_ndpd.c
+Index: ipadm/usr/src/lib/libipadm/amd64/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ ipadm/usr/src/lib/libipadm/amd64/Makefile 2013-03-08 19:43:37.737309724 +0000
+@@ -0,0 +1,5 @@
++include ../Makefile.com
++include ../../Makefile.lib.64
++
++install: all $(ROOTLIBS64) $(ROOTLINKS64)
++
diff --git a/ipadm/debian/patches/libipadm-pointers.patch b/ipadm/debian/patches/libipadm-pointers.patch
new file mode 100644
index 0000000..9ef9389
--- /dev/null
+++ b/ipadm/debian/patches/libipadm-pointers.patch
@@ -0,0 +1,271 @@
+Description: use size_t to fix 64-bit compilation
+Index: ipadm/usr/src/lib/libipadm/common/ipadm_prop.c
+===================================================================
+--- ipadm.orig/usr/src/lib/libipadm/common/ipadm_prop.c 2012-10-08 00:25:39.000000000 +0000
++++ ipadm/usr/src/lib/libipadm/common/ipadm_prop.c 2013-03-08 21:31:01.610678671 +0000
+@@ -365,7 +365,7 @@
+ /* to reset MTU first retrieve the default MTU and then set it */
+ if (flags & IPADM_OPT_DEFAULT) {
+ ipadm_status_t status;
+- uint_t size = MAXPROPVALLEN;
++ size_t size = MAXPROPVALLEN;
+
+ status = i_ipadm_get_prop(iph, arg, pdp, val, &size,
+ proto, MOD_PROP_DEFAULT);
+@@ -522,7 +522,7 @@
+ /* ARGSUSED */
+ static ipadm_status_t
+ i_ipadm_get_hostmodel(ipadm_handle_t iph, const void *arg,
+- ipadm_prop_desc_t *pdp, char *buf, uint_t *bufsize, uint_t proto,
++ ipadm_prop_desc_t *pdp, char *buf, size_t *bufsize, uint_t proto,
+ uint_t valtype)
+ {
+ ip_hostmodel_t hostmodel;
+@@ -739,11 +739,12 @@
+ /* ARGSUSED */
+ ipadm_status_t
+ i_ipadm_get_ecnsack(ipadm_handle_t iph, const void *arg,
+- ipadm_prop_desc_t *pdp, char *buf, uint_t *bufsize, uint_t proto,
++ ipadm_prop_desc_t *pdp, char *buf, size_t *bufsize, uint_t proto,
+ uint_t valtype)
+ {
+ ipadm_status_t status = IPADM_SUCCESS;
+- uint_t i, nbytes = 0;
++ uint_t i;
++ size_t nbytes = 0;
+
+ switch (valtype) {
+ case MOD_PROP_POSSIBLE:
+@@ -798,7 +799,7 @@
+ /* ARGSUSED */
+ static ipadm_status_t
+ i_ipadm_get_forwarding(ipadm_handle_t iph, const void *arg,
+- ipadm_prop_desc_t *pdp, char *buf, uint_t *bufsize, uint_t proto,
++ ipadm_prop_desc_t *pdp, char *buf, size_t *bufsize, uint_t proto,
+ uint_t valtype)
+ {
+ const char *ifname = arg;
+@@ -836,7 +837,7 @@
+ /* ARGSUSED */
+ static ipadm_status_t
+ i_ipadm_get_mtu(ipadm_handle_t iph, const void *arg,
+- ipadm_prop_desc_t *pdp, char *buf, uint_t *bufsize, uint_t proto,
++ ipadm_prop_desc_t *pdp, char *buf, size_t *bufsize, uint_t proto,
+ uint_t valtype)
+ {
+ struct lifreq lifr;
+@@ -875,7 +876,7 @@
+ /* ARGSUSED */
+ static ipadm_status_t
+ i_ipadm_get_metric(ipadm_handle_t iph, const void *arg,
+- ipadm_prop_desc_t *pdp, char *buf, uint_t *bufsize, uint_t proto,
++ ipadm_prop_desc_t *pdp, char *buf, size_t *bufsize, uint_t proto,
+ uint_t valtype)
+ {
+ struct lifreq lifr;
+@@ -915,7 +916,7 @@
+ /* ARGSUSED */
+ static ipadm_status_t
+ i_ipadm_get_usesrc(ipadm_handle_t iph, const void *arg,
+- ipadm_prop_desc_t *ipd, char *buf, uint_t *bufsize, uint_t proto,
++ ipadm_prop_desc_t *ipd, char *buf, size_t *bufsize, uint_t proto,
+ uint_t valtype)
+ {
+ struct lifreq lifr;
+@@ -961,7 +962,7 @@
+ /* ARGSUSED */
+ static ipadm_status_t
+ i_ipadm_get_ifprop_flags(ipadm_handle_t iph, const void *arg,
+- ipadm_prop_desc_t *pdp, char *buf, uint_t *bufsize, uint_t proto,
++ ipadm_prop_desc_t *pdp, char *buf, size_t *bufsize, uint_t proto,
+ uint_t valtype)
+ {
+ uint64_t intf_flags;
+@@ -1022,7 +1023,7 @@
+ }
+
+ static void
+-i_ipadm_perm2str(char *buf, uint_t *bufsize)
++i_ipadm_perm2str(char *buf, size_t *bufsize)
+ {
+ uint_t perm = atoi(buf);
+
+@@ -1034,7 +1035,7 @@
+ /* ARGSUSED */
+ static ipadm_status_t
+ i_ipadm_get_prop(ipadm_handle_t iph, const void *arg,
+- ipadm_prop_desc_t *pdp, char *buf, uint_t *bufsize, uint_t proto,
++ ipadm_prop_desc_t *pdp, char *buf, size_t *bufsize, uint_t proto,
+ uint_t valtype)
+ {
+ ipadm_status_t status = IPADM_SUCCESS;
+@@ -1142,7 +1143,7 @@
+ */
+ static ipadm_status_t
+ i_ipadm_getprop_common(ipadm_handle_t iph, const char *ifname,
+- const char *pname, char *buf, uint_t *bufsize, uint_t proto,
++ const char *pname, char *buf, size_t *bufsize, uint_t proto,
+ uint_t valtype)
+ {
+ ipadm_status_t status = IPADM_SUCCESS;
+@@ -1223,7 +1224,7 @@
+ */
+ ipadm_status_t
+ ipadm_get_prop(ipadm_handle_t iph, const char *pname, char *buf,
+- uint_t *bufsize, uint_t proto, uint_t valtype)
++ size_t *bufsize, uint_t proto, uint_t valtype)
+ {
+ /*
+ * validate the arguments of the function.
+@@ -1247,7 +1248,7 @@
+ */
+ ipadm_status_t
+ ipadm_get_ifprop(ipadm_handle_t iph, const char *ifname, const char *pname,
+- char *buf, uint_t *bufsize, uint_t proto, uint_t valtype)
++ char *buf, size_t *bufsize, uint_t proto, uint_t valtype)
+ {
+ /* validate the arguments of the function. */
+ if (iph == NULL || pname == NULL || buf == NULL ||
+@@ -1599,7 +1600,7 @@
+ /* ARGSUSED */
+ ipadm_status_t
+ i_ipadm_get_onoff(ipadm_handle_t iph, const void *arg, ipadm_prop_desc_t *dp,
+- char *buf, uint_t *bufsize, uint_t proto, uint_t valtype)
++ char *buf, size_t *bufsize, uint_t proto, uint_t valtype)
+ {
+ (void) snprintf(buf, *bufsize, "%s,%s", IPADM_ONSTR, IPADM_OFFSTR);
+ return (IPADM_SUCCESS);
+@@ -1610,7 +1611,7 @@
+ */
+ ipadm_status_t
+ i_ipadm_get_persist_propval(ipadm_handle_t iph, ipadm_prop_desc_t *pdp,
+- char *gbuf, uint_t *gbufsize, const void *object)
++ char *gbuf, size_t *gbufsize, const void *object)
+ {
+ ipmgmt_prop_arg_t parg;
+ ipmgmt_getprop_rval_t rval, *rvalp;
+Index: ipadm/usr/src/lib/libipadm/common/libipadm.h
+===================================================================
+--- ipadm.orig/usr/src/lib/libipadm/common/libipadm.h 2012-10-08 00:25:40.000000000 +0000
++++ ipadm/usr/src/lib/libipadm/common/libipadm.h 2013-03-08 21:31:01.613585145 +0000
+@@ -330,19 +330,19 @@
+ extern ipadm_status_t ipadm_set_ifprop(ipadm_handle_t, const char *,
+ const char *, const char *, uint_t, uint_t);
+ extern ipadm_status_t ipadm_get_ifprop(ipadm_handle_t, const char *,
+- const char *, char *, uint_t *, uint_t, uint_t);
++ const char *, char *, size_t *, uint_t, uint_t);
+
+ /* Address property management - set, reset and get */
+ extern ipadm_status_t ipadm_set_addrprop(ipadm_handle_t, const char *,
+ const char *, const char *, uint_t);
+ extern ipadm_status_t ipadm_get_addrprop(ipadm_handle_t, const char *, char *,
+- uint_t *, const char *, uint_t);
++ size_t *, const char *, uint_t);
+
+ /* Protoocl property management - set, reset and get */
+ extern ipadm_status_t ipadm_set_prop(ipadm_handle_t, const char *,
+ const char *, uint_t, uint_t);
+ extern ipadm_status_t ipadm_get_prop(ipadm_handle_t, const char *, char *,
+- uint_t *, uint_t, uint_t);
++ size_t *, uint_t, uint_t);
+
+ /*
+ * miscellaneous helper functions.
+Index: ipadm/usr/src/lib/libipadm/common/libipadm_impl.h
+===================================================================
+--- ipadm.orig/usr/src/lib/libipadm/common/libipadm_impl.h 2012-10-08 00:25:40.000000000 +0000
++++ ipadm/usr/src/lib/libipadm/common/libipadm_impl.h 2013-03-08 21:31:01.615909606 +0000
+@@ -114,7 +114,7 @@
+
+ /* property get() callback */
+ typedef ipadm_status_t ipadm_pd_getf_t(ipadm_handle_t, const void *,
+- ipadm_prop_desc_t *, char *, uint_t *, uint_t, uint_t);
++ ipadm_prop_desc_t *, char *, size_t *, uint_t, uint_t);
+
+ struct ipadm_prop_desc {
+ char *ipd_name; /* property name */
+@@ -177,7 +177,7 @@
+ ipadm_prop_desc_t *, const char *, const void *,
+ uint_t);
+ extern ipadm_status_t i_ipadm_get_persist_propval(ipadm_handle_t,
+- ipadm_prop_desc_t *, char *, uint_t *,
++ ipadm_prop_desc_t *, char *, size_t *,
+ const void *);
+
+ /* ipadm_addr.c */
+Index: ipadm/usr/src/lib/libipadm/common/ipadm_addr.c
+===================================================================
+--- ipadm.orig/usr/src/lib/libipadm/common/ipadm_addr.c 2012-10-08 00:25:39.000000000 +0000
++++ ipadm/usr/src/lib/libipadm/common/ipadm_addr.c 2013-03-08 21:39:05.164509858 +0000
+@@ -143,7 +143,7 @@
+ * set() and/or get() callback functions.
+ */
+ static ipadm_status_t
+-i_ipadm_pd2permstr(ipadm_prop_desc_t *pdp, char *buf, uint_t *bufsize)
++i_ipadm_pd2permstr(ipadm_prop_desc_t *pdp, char *buf, size_t *bufsize)
+ {
+ uint_t perm;
+ size_t nbytes;
+@@ -1046,7 +1046,7 @@
+ /* ARGSUSED */
+ static ipadm_status_t
+ i_ipadm_get_broadcast(ipadm_handle_t iph, const void *arg,
+- ipadm_prop_desc_t *pdp, char *buf, uint_t *bufsize, uint_t af,
++ ipadm_prop_desc_t *pdp, char *buf, size_t *bufsize, uint_t af,
+ uint_t valtype)
+ {
+ struct sockaddr_in *sin;
+@@ -1075,7 +1075,7 @@
+ uint_t plen;
+ in_addr_t addr, maddr;
+ char val[MAXPROPVALLEN];
+- uint_t valsz = MAXPROPVALLEN;
++ size_t valsz = MAXPROPVALLEN;
+ ipadm_status_t status;
+ int err;
+ struct sockaddr_in *sin;
+@@ -1163,7 +1163,7 @@
+ /* ARGSUSED */
+ static ipadm_status_t
+ i_ipadm_get_prefixlen(ipadm_handle_t iph, const void *arg,
+- ipadm_prop_desc_t *pdp, char *buf, uint_t *bufsize, uint_t af,
++ ipadm_prop_desc_t *pdp, char *buf, size_t *bufsize, uint_t af,
+ uint_t valtype)
+ {
+ struct lifreq lifr;
+@@ -1256,7 +1256,7 @@
+ /* ARGSUSED */
+ static ipadm_status_t
+ i_ipadm_get_addr_flag(ipadm_handle_t iph, const void *arg,
+- ipadm_prop_desc_t *pdp, char *buf, uint_t *bufsize, uint_t af,
++ ipadm_prop_desc_t *pdp, char *buf, size_t *bufsize, uint_t af,
+ uint_t valtype)
+ {
+ boolean_t on = B_FALSE;
+@@ -1315,7 +1315,7 @@
+ /* ARGSUSED */
+ static ipadm_status_t
+ i_ipadm_get_zone(ipadm_handle_t iph, const void *arg,
+- ipadm_prop_desc_t *pdp, char *buf, uint_t *bufsize, uint_t af,
++ ipadm_prop_desc_t *pdp, char *buf, size_t *bufsize, uint_t af,
+ uint_t valtype)
+ {
+ struct lifreq lifr;
+@@ -1388,7 +1388,7 @@
+ */
+ ipadm_status_t
+ ipadm_get_addrprop(ipadm_handle_t iph, const char *pname, char *buf,
+- uint_t *bufsize, const char *aobjname, uint_t valtype)
++ size_t *bufsize, const char *aobjname, uint_t valtype)
+ {
+ struct ipadm_addrobj_s ipaddr;
+ ipadm_status_t status = IPADM_SUCCESS;
+@@ -1468,7 +1468,7 @@
+ sa_family_t af;
+ ipadm_prop_desc_t *pdp = NULL;
+ char defbuf[MAXPROPVALLEN];
+- uint_t defbufsize = MAXPROPVALLEN;
++ size_t defbufsize = MAXPROPVALLEN;
+ boolean_t reset = (pflags & IPADM_OPT_DEFAULT);
+ ipadm_status_t status = IPADM_SUCCESS;
+
diff --git a/ipadm/debian/patches/series b/ipadm/debian/patches/series
new file mode 100644
index 0000000..63653ed
--- /dev/null
+++ b/ipadm/debian/patches/series
@@ -0,0 +1,6 @@
+libipadm-add-amd64.patch
+libipadm-pointers.patch
+ipadm-libinetutil-prototypes.patch
+ipadm-no-libxnet.patch
+ipmgmtd-install.patch
+illumos-815-Need-ipadm-1M-manual-page.patch
diff --git a/ipadm/debian/rules b/ipadm/debian/rules
new file mode 100755
index 0000000..3474633
--- /dev/null
+++ b/ipadm/debian/rules
@@ -0,0 +1,110 @@
+#!/usr/bin/make -f
+
+include /usr/share/dpkg/architecture.mk
+export DH_VERBOSE = 1
+
+# libs having "install_h" target to install headers:
+libs_headers := \
+libipadm \
+
+# All libraries to build and to package.
+# Order is important:
+libs := $(libs_headers) \
+
+cmd := \
+ cmd-inet/usr.sbin/ipadm \
+ cmd-inet/lib/ipmgmtd \
+
+
+unpack: unpack-stamp
+unpack-stamp:
+ dh_testdir
+ dh_illumos_gate --build \
+ usr/src/cmd/cmd-inet/Makefile.cmd-inet \
+ $(libs:%=usr/src/lib/%) \
+ $(cmd:%=usr/src/cmd/%)
+
+ # Not used and buggy:
+ echo > usr/src/Makefile.msg.targ
+ touch $@
+
+patch: patch-stamp
+patch-stamp: unpack-stamp
+ dh_testdir
+ [ ! -f debian/patches/series ] || QUILT_PATCHES=debian/patches quilt push -a || test $$? = 2
+ touch $@
+
+unpatch:
+ dh_testdir
+ [ ! -f debian/patches/series ] || QUILT_PATCHES=debian/patches quilt pop -a -f || test $$? = 2
+ rm -f patch-stamp
+
+dirs-stamp:
+ . usr/env.sh; mkdir -p \
+ debian/tmp$$DEB_LIBDIR_32 \
+ debian/tmp$$DEB_USRLIBDIR_64 \
+ debian/tmp$$DEB_LIBDIR_64 \
+ debian/tmp$$DEB_USRLIBDIR_32 \
+ debian/tmp/etc \
+ debian/tmp/lib/inet \
+ debian/tmp/lib/svc/manifest/network \
+ debian/tmp/lib/svc/method \
+ debian/tmp/sbin \
+ debian/tmp/usr/include \
+ debian/tmp/usr/sbin
+ touch $@
+
+headers-stamp: patch-stamp dirs-stamp
+ dh_illumos_make $(libs_headers:%=usr/src/lib/%) -t install_h
+ touch $@
+
+install: install-stamp
+install-stamp: build-stamp
+ # Move dev symlink from /lib into /usr/lib:
+ for l in `find debian/tmp/lib32 -maxdepth 1 -type l -name \*.so`; do \
+ ln -sf `readlink -f $$l` debian/tmp/usr/lib32/`basename $$l`; \
+ rm $$l; \
+ done
+ for l in `find debian/tmp/lib/$(DEB_HOST_MULTIARCH) -maxdepth 1 -type l -name \*.so`; do \
+ ln -sf `readlink -f $$l` debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/`basename $$l`; \
+ rm $$l; \
+ done
+ # Make symlinks relative:
+ symlinks -c debian/tmp/usr/lib32
+ symlinks -c debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
+ touch $@
+
+build build-arch build-indep: build-stamp
+build-stamp: patch-stamp dirs-stamp headers-stamp
+ dh_illumos_make $(libs:%=usr/src/lib/%)
+ dh_illumos_make --native $(cmd:%=usr/src/cmd/%)
+ touch $@
+
+binary binary-arch binary-indep: binary-stamp
+binary-stamp: install-stamp
+ dh_testdir
+ dh_testroot
+ dh_installdirs
+ dh_install
+ dh_installman
+ dh_installdocs
+ dh_installexamples
+ dh_installchangelogs
+ dh_link
+ dh_compress
+ dh_fixperms
+ dh_makeshlibs -- -c4
+ dh_installdeb
+ dh_shlibdeps
+ dh_strip
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+ touch $@
+
+clean: unpatch
+ dh_testdir
+ dh_testroot
+ dh_clean
+ rm -rf usr .pc
+
diff --git a/ipadm/debian/source/format b/ipadm/debian/source/format
new file mode 100644
index 0000000..89ae9db
--- /dev/null
+++ b/ipadm/debian/source/format
@@ -0,0 +1 @@
+3.0 (native)