summaryrefslogtreecommitdiff
path: root/usr/src/lib
diff options
context:
space:
mode:
authoryz147064 <none@none>2007-03-21 09:48:58 -0700
committeryz147064 <none@none>2007-03-21 09:48:58 -0700
commitf595a68a3b8953a12aa778c2abd7642df8da8c3a (patch)
tree1cef70a487a4a4ae84778794fcbf4a6853b9b2b5 /usr/src/lib
parent880e0df1f057217de7e4bf18b04b73d93730bdfa (diff)
downloadillumos-gate-f595a68a3b8953a12aa778c2abd7642df8da8c3a.tar.gz
PSARC 2007/140 libdladm restructure
6329535 the use_cache argument of macadm_walk function should be removed 6454340 macadm_walk leaks 6509525 wrong error code when adding/removing ports to/from an aggregation 6509532 aggregation deleting fails but system reports success 6518572 the reference to dls_vlan should be released if setzoneid fails 6520149 show-linkprop stops showing full list of link properties if it fails to display one property 6535220 potential complicated library dependency and code duplication between libdladm and its friends --HG-- rename : usr/src/lib/liblaadm/Makefile => deleted_files/usr/src/lib/liblaadm/Makefile rename : usr/src/lib/liblaadm/Makefile.com => deleted_files/usr/src/lib/liblaadm/Makefile.com rename : usr/src/lib/liblaadm/common/llib-llaadm => deleted_files/usr/src/lib/liblaadm/common/llib-llaadm rename : usr/src/lib/liblaadm/common/mapfile-vers => deleted_files/usr/src/lib/liblaadm/common/mapfile-vers rename : usr/src/lib/liblaadm/i386/Makefile => deleted_files/usr/src/lib/liblaadm/i386/Makefile rename : usr/src/lib/liblaadm/sparc/Makefile => deleted_files/usr/src/lib/liblaadm/sparc/Makefile rename : usr/src/lib/libmacadm/Makefile => deleted_files/usr/src/lib/libmacadm/Makefile rename : usr/src/lib/libmacadm/Makefile.com => deleted_files/usr/src/lib/libmacadm/Makefile.com rename : usr/src/lib/libmacadm/common/libmacadm.c => deleted_files/usr/src/lib/libmacadm/common/libmacadm.c rename : usr/src/lib/libmacadm/common/libmacadm.h => deleted_files/usr/src/lib/libmacadm/common/libmacadm.h rename : usr/src/lib/libmacadm/common/llib-lmacadm => deleted_files/usr/src/lib/libmacadm/common/llib-lmacadm rename : usr/src/lib/libmacadm/common/mapfile-vers => deleted_files/usr/src/lib/libmacadm/common/mapfile-vers rename : usr/src/lib/libmacadm/i386/Makefile => deleted_files/usr/src/lib/libmacadm/i386/Makefile rename : usr/src/lib/libmacadm/sparc/Makefile => deleted_files/usr/src/lib/libmacadm/sparc/Makefile rename : usr/src/lib/libwladm/Makefile => deleted_files/usr/src/lib/libwladm/Makefile rename : usr/src/lib/libwladm/Makefile.com => deleted_files/usr/src/lib/libwladm/Makefile.com rename : usr/src/lib/libwladm/common/llib-lwladm => deleted_files/usr/src/lib/libwladm/common/llib-lwladm rename : usr/src/lib/libwladm/common/mapfile-vers => deleted_files/usr/src/lib/libwladm/common/mapfile-vers rename : usr/src/lib/libwladm/i386/Makefile => deleted_files/usr/src/lib/libwladm/i386/Makefile rename : usr/src/lib/libwladm/libwladm.xcl => deleted_files/usr/src/lib/libwladm/libwladm.xcl rename : usr/src/lib/libwladm/sparc/Makefile => deleted_files/usr/src/lib/libwladm/sparc/Makefile rename : usr/src/lib/liblaadm/common/liblaadm.c => usr/src/lib/libdladm/common/libdlaggr.c rename : usr/src/lib/liblaadm/common/liblaadm.h => usr/src/lib/libdladm/common/libdlaggr.h rename : usr/src/lib/libwladm/common/libwladm.c => usr/src/lib/libdladm/common/libdlwlan.c rename : usr/src/lib/libwladm/common/libwladm.h => usr/src/lib/libdladm/common/libdlwlan.h rename : usr/src/lib/libwladm/common/libwladm_impl.h => usr/src/lib/libdladm/common/libdlwlan_impl.h
Diffstat (limited to 'usr/src/lib')
-rw-r--r--usr/src/lib/Makefile11
-rw-r--r--usr/src/lib/libdladm/Makefile8
-rw-r--r--usr/src/lib/libdladm/Makefile.com6
-rw-r--r--usr/src/lib/libdladm/common/libdladm.c285
-rw-r--r--usr/src/lib/libdladm/common/libdladm.h59
-rw-r--r--usr/src/lib/libdladm/common/libdlaggr.c (renamed from usr/src/lib/liblaadm/common/liblaadm.c)898
-rw-r--r--usr/src/lib/libdladm/common/libdlaggr.h113
-rw-r--r--usr/src/lib/libdladm/common/libdllink.c391
-rw-r--r--usr/src/lib/libdladm/common/libdllink.h104
-rw-r--r--usr/src/lib/libdladm/common/libdlwlan.c (renamed from usr/src/lib/libwladm/common/libwladm.c)851
-rw-r--r--usr/src/lib/libdladm/common/libdlwlan.h202
-rw-r--r--usr/src/lib/libdladm/common/libdlwlan_impl.h (renamed from usr/src/lib/libwladm/common/libwladm_impl.h)47
-rw-r--r--usr/src/lib/libdladm/common/linkprop.c86
-rw-r--r--usr/src/lib/libdladm/common/llib-ldladm11
-rw-r--r--usr/src/lib/libdladm/common/mapfile-vers61
-rw-r--r--usr/src/lib/libdladm/common/secobj.c3
-rw-r--r--usr/src/lib/liblaadm/Makefile62
-rw-r--r--usr/src/lib/liblaadm/Makefile.com53
-rw-r--r--usr/src/lib/liblaadm/common/liblaadm.h114
-rw-r--r--usr/src/lib/liblaadm/common/llib-llaadm32
-rw-r--r--usr/src/lib/liblaadm/common/mapfile-vers49
-rw-r--r--usr/src/lib/liblaadm/i386/Makefile31
-rw-r--r--usr/src/lib/liblaadm/sparc/Makefile31
-rw-r--r--usr/src/lib/libmacadm/Makefile62
-rw-r--r--usr/src/lib/libmacadm/Makefile.com53
-rw-r--r--usr/src/lib/libmacadm/common/libmacadm.c137
-rw-r--r--usr/src/lib/libmacadm/common/libmacadm.h46
-rw-r--r--usr/src/lib/libmacadm/common/llib-lmacadm32
-rw-r--r--usr/src/lib/libmacadm/common/mapfile-vers33
-rw-r--r--usr/src/lib/libmacadm/i386/Makefile31
-rw-r--r--usr/src/lib/libmacadm/sparc/Makefile31
-rw-r--r--usr/src/lib/libwladm/Makefile63
-rw-r--r--usr/src/lib/libwladm/Makefile.com51
-rw-r--r--usr/src/lib/libwladm/common/libwladm.h209
-rw-r--r--usr/src/lib/libwladm/common/llib-lwladm31
-rw-r--r--usr/src/lib/libwladm/common/mapfile-vers60
-rw-r--r--usr/src/lib/libwladm/i386/Makefile30
-rw-r--r--usr/src/lib/libwladm/libwladm.xcl52
-rw-r--r--usr/src/lib/libwladm/sparc/Makefile30
39 files changed, 1819 insertions, 2640 deletions
diff --git a/usr/src/lib/Makefile b/usr/src/lib/Makefile
index 2da0041d8c..2aa4ff378a 100644
--- a/usr/src/lib/Makefile
+++ b/usr/src/lib/Makefile
@@ -112,9 +112,7 @@ SUBDIRS += \
libkmf \
libkstat \
libkvm \
- liblaadm \
liblm \
- libmacadm \
libmalloc \
libmapmalloc \
libmtmalloc \
@@ -185,7 +183,6 @@ SUBDIRS += \
madv \
mpss \
libdisasm \
- libwladm \
libwrap \
libxcurses \
libxcurses2 \
@@ -295,7 +292,6 @@ MSGSUBDIRS= \
libuutil \
libwanboot \
libwanbootutil \
- libwladm \
libzfs \
libzonecfg \
lvm \
@@ -350,8 +346,6 @@ HDRSUBDIRS= \
libiscsitgt \
libkstat \
libkvm \
- liblaadm \
- libmacadm \
libmail \
libmd \
libmtmalloc \
@@ -386,7 +380,6 @@ HDRSUBDIRS= \
libvolmgt \
libumem \
libuutil \
- libwladm \
libwrap \
libxcurses2 \
libzfs \
@@ -475,8 +468,8 @@ libdevinfo: libnvpair libsec
libdhcpagent: libsocket libdhcputil libuuid libdlpi
libdhcpsvc: libinetutil
libdhcputil: libnsl libgen libinetutil libdlpi
+libdladm: libdlpi libdevinfo libinetutil libsocket
libdlpi: libinetutil
-libdladm: libdlpi libdevinfo libwladm libinetutil
libdtrace: libproc libgen libctf
libdtrace_jni: libuutil libdtrace
libefi: libuuid
@@ -487,7 +480,6 @@ libinetcfg: libnsl libsocket libdevinfo
libkmf: libcryptoutil pkcs11 openssl
libnsl: libmd5 libscf
libmapid: libresolv
-libmacadm: libdevinfo
libuuid: libsocket
libinetutil: libsocket
libsecdb: libnsl
@@ -508,7 +500,6 @@ libwrap: libnsl libsocket
libwanboot: libnvpair libresolv libnsl libsocket libdevinfo libinetutil \
libdhcputil openssl
libwanbootutil: libnsl
-libwladm: libdevinfo libsocket
pam_modules: libproject passwdutil $(SMARTCARD)
libscf: libuutil libmd
libinetsvc: libscf
diff --git a/usr/src/lib/libdladm/Makefile b/usr/src/lib/libdladm/Makefile
index 762ca385cd..062dae3028 100644
--- a/usr/src/lib/libdladm/Makefile
+++ b/usr/src/lib/libdladm/Makefile
@@ -19,7 +19,7 @@
# CDDL HEADER END
#
#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# ident "%Z%%M% %I% %E% SMI"
@@ -27,13 +27,15 @@
include $(SRC)/lib/Makefile.lib
-HDRS = libdladm.h libdladm_impl.h
+HDRS = libdladm.h libdladm_impl.h libdllink.h libdlaggr.h \
+ libdlwlan.h libdlwlan_impl.h
HDRDIR = common
SUBDIRS = $(MACH)
POFILE = libdladm.po
-MSGFILES = common/libdladm.c common/linkprop.c common/secobj.c
+MSGFILES = common/libdladm.c common/linkprop.c common/secobj.c \
+ common/libdllink.c comon/libdlaggr.c common/libdlwlan.c
XGETFLAGS = -a -x libdladm.xcl
all := TARGET = all
diff --git a/usr/src/lib/libdladm/Makefile.com b/usr/src/lib/libdladm/Makefile.com
index 83b423a83b..a3da9a4770 100644
--- a/usr/src/lib/libdladm/Makefile.com
+++ b/usr/src/lib/libdladm/Makefile.com
@@ -19,7 +19,7 @@
# CDDL HEADER END
#
#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# ident "%Z%%M% %I% %E% SMI"
@@ -27,7 +27,7 @@
LIBRARY = libdladm.a
VERS = .1
-OBJECTS = libdladm.o secobj.o linkprop.o
+OBJECTS = libdladm.o secobj.o linkprop.o libdllink.o libdlaggr.o libdlwlan.o
include ../../Makefile.lib
@@ -35,7 +35,7 @@ include ../../Makefile.lib
include ../../Makefile.rootfs
LIBS = $(DYNLIB) $(LINTLIB)
-LDLIBS += -ldevinfo -ldlpi -lc -lwladm -linetutil
+LDLIBS += -ldevinfo -ldlpi -lc -linetutil -lsocket
SRCDIR = ../common
$(LINTLIB) := SRCS = $(SRCDIR)/$(LINTSRC)
diff --git a/usr/src/lib/libdladm/common/libdladm.c b/usr/src/lib/libdladm/common/libdladm.c
index 5a5c06c464..cf6669b5e6 100644
--- a/usr/src/lib/libdladm/common/libdladm.c
+++ b/usr/src/lib/libdladm/common/libdladm.c
@@ -25,30 +25,16 @@
#pragma ident "%Z%%M% %I% %E% SMI"
-#include <ctype.h>
#include <unistd.h>
#include <stropts.h>
#include <errno.h>
#include <fcntl.h>
#include <strings.h>
#include <dirent.h>
-#include <net/if.h>
#include <sys/stat.h>
-#include <sys/dld.h>
-#include <libdlpi.h>
-#include <libdevinfo.h>
+#include <libdladm.h>
#include <libdladm_impl.h>
#include <libintl.h>
-#include <sys/vlan.h>
-
-typedef struct dladm_dev {
- char dd_name[IFNAMSIZ];
- struct dladm_dev *dd_next;
-} dladm_dev_t;
-
-typedef struct dladm_walk {
- dladm_dev_t *dw_dev_list;
-} dladm_walk_t;
static char dladm_rootdir[MAXPATHLEN] = "/";
@@ -69,239 +55,6 @@ i_dladm_ioctl(int fd, int ic_cmd, void *ic_dp, int ic_len)
return (ioctl(fd, I_STR, &iocb));
}
-/*
- * Return the attributes of the specified datalink from the DLD driver.
- */
-static int
-i_dladm_info(int fd, const char *name, dladm_attr_t *dap)
-{
- dld_ioc_attr_t dia;
-
- if (strlen(name) >= IFNAMSIZ) {
- errno = EINVAL;
- return (-1);
- }
-
- (void) strlcpy(dia.dia_name, name, IFNAMSIZ);
-
- if (i_dladm_ioctl(fd, DLDIOCATTR, &dia, sizeof (dia)) < 0)
- return (-1);
-
- (void) strlcpy(dap->da_dev, dia.dia_dev, MAXNAMELEN);
- dap->da_max_sdu = dia.dia_max_sdu;
- dap->da_vid = dia.dia_vid;
-
- return (0);
-}
-
-/*
- * Adds a datalink to the array corresponding to arg.
- */
-static void
-i_dladm_nt_net_add(void *arg, char *name)
-{
- dladm_walk_t *dwp = arg;
- dladm_dev_t *ddp = dwp->dw_dev_list;
- dladm_dev_t **lastp = &dwp->dw_dev_list;
-
- while (ddp) {
- /*
- * Skip duplicates.
- */
- if (strcmp(ddp->dd_name, name) == 0)
- return;
-
- lastp = &ddp->dd_next;
- ddp = ddp->dd_next;
- }
-
- if ((ddp = malloc(sizeof (*ddp))) == NULL)
- return;
-
- (void) strlcpy(ddp->dd_name, name, IFNAMSIZ);
- ddp->dd_next = NULL;
- *lastp = ddp;
-}
-
-/*
- * Walker callback invoked for each DDI_NT_NET node.
- */
-static int
-i_dladm_nt_net_walk(di_node_t node, di_minor_t minor, void *arg)
-{
- char linkname[DLPI_LINKNAME_MAX];
- dlpi_handle_t dh;
-
- if (dlpi_makelink(linkname, di_minor_name(minor),
- di_instance(node)) != DLPI_SUCCESS)
- return (DI_WALK_CONTINUE);
-
- if (dlpi_open(linkname, &dh, 0) == DLPI_SUCCESS) {
- i_dladm_nt_net_add(arg, linkname);
- dlpi_close(dh);
- }
- return (DI_WALK_CONTINUE);
-}
-
-/*
- * Hold a data-link.
- */
-static int
-i_dladm_hold_link(const char *name, zoneid_t zoneid, boolean_t docheck)
-{
- int fd;
- dld_hold_vlan_t dhv;
-
- if (strlen(name) >= IFNAMSIZ) {
- errno = EINVAL;
- return (-1);
- }
-
- if ((fd = open(DLD_CONTROL_DEV, O_RDWR)) < 0)
- return (-1);
-
- bzero(&dhv, sizeof (dld_hold_vlan_t));
- (void) strlcpy(dhv.dhv_name, name, IFNAMSIZ);
- dhv.dhv_zid = zoneid;
- dhv.dhv_docheck = docheck;
-
- if (i_dladm_ioctl(fd, DLDIOCHOLDVLAN, &dhv, sizeof (dhv)) < 0) {
- int olderrno = errno;
-
- (void) close(fd);
- errno = olderrno;
- return (-1);
- }
-
- (void) close(fd);
- return (0);
-}
-
-/*
- * Release a data-link.
- */
-static int
-i_dladm_rele_link(const char *name, zoneid_t zoneid, boolean_t docheck)
-{
- int fd;
- dld_hold_vlan_t dhv;
-
- if (strlen(name) >= IFNAMSIZ) {
- errno = EINVAL;
- return (-1);
- }
-
- if ((fd = open(DLD_CONTROL_DEV, O_RDWR)) < 0)
- return (-1);
-
- bzero(&dhv, sizeof (dld_hold_vlan_t));
- (void) strlcpy(dhv.dhv_name, name, IFNAMSIZ);
- dhv.dhv_zid = zoneid;
- dhv.dhv_docheck = docheck;
-
- if (i_dladm_ioctl(fd, DLDIOCRELEVLAN, &dhv, sizeof (dhv)) < 0) {
- int olderrno = errno;
-
- (void) close(fd);
- errno = olderrno;
- return (-1);
- }
-
- (void) close(fd);
- return (0);
-}
-
-/*
- * Invoke the specified callback function for each active DDI_NT_NET
- * node.
- */
-int
-dladm_walk(void (*fn)(void *, const char *), void *arg)
-{
- di_node_t root;
- dladm_walk_t dw;
- dladm_dev_t *ddp, *last_ddp;
-
- if ((root = di_init("/", DINFOCACHE)) == DI_NODE_NIL) {
- errno = EFAULT;
- return (-1);
- }
- dw.dw_dev_list = NULL;
-
- (void) di_walk_minor(root, DDI_NT_NET, DI_CHECK_ALIAS, &dw,
- i_dladm_nt_net_walk);
-
- di_fini(root);
-
- ddp = dw.dw_dev_list;
- while (ddp) {
- fn(arg, ddp->dd_name);
- last_ddp = ddp;
- ddp = ddp->dd_next;
- free(last_ddp);
- }
-
- return (0);
-}
-
-/*
- * Invoke the specified callback function for each vlan managed by dld
- */
-int
-dladm_walk_vlan(void (*fn)(void *, const char *), void *arg, const char *name)
-{
- int fd, bufsize, i;
- int nvlan = 4094;
- dld_ioc_vlan_t *iocp = NULL;
- dld_vlan_info_t *dvip;
-
- if ((fd = open(DLD_CONTROL_DEV, O_RDWR)) < 0)
- return (-1);
-
- bufsize = sizeof (dld_ioc_vlan_t) + nvlan * sizeof (dld_vlan_info_t);
-
- if ((iocp = (dld_ioc_vlan_t *)calloc(1, bufsize)) == NULL)
- return (-1);
-
- (void) strlcpy((char *)iocp->div_name, name, IFNAMSIZ);
- if (i_dladm_ioctl(fd, DLDIOCVLAN, iocp, bufsize) == 0) {
- dvip = (dld_vlan_info_t *)(iocp + 1);
- for (i = 0; i < iocp->div_count; i++)
- (*fn)(arg, dvip[i].dvi_name);
- }
- /*
- * Note: Callers of dladm_walk_vlan() ignore the return
- * value of this routine. So ignoring ioctl failure case
- * and just returning 0.
- */
- free(iocp);
- (void) close(fd);
- return (0);
-}
-
-
-/*
- * Returns the current attributes of the specified datalink.
- */
-int
-dladm_info(const char *name, dladm_attr_t *dap)
-{
- int fd;
-
- if ((fd = open(DLD_CONTROL_DEV, O_RDWR)) < 0)
- return (-1);
-
- if (i_dladm_info(fd, name, dap) < 0)
- goto failed;
-
- (void) close(fd);
- return (0);
-
-failed:
- (void) close(fd);
- return (-1);
-}
-
const char *
dladm_status2str(dladm_status_t status, char *buf)
{
@@ -356,6 +109,24 @@ dladm_status2str(dladm_status_t status, char *buf)
case DLADM_STATUS_TEMPONLY:
s = "change cannot be persistent, specify -t please";
break;
+ case DLADM_STATUS_TIMEDOUT:
+ s = "operation timed out";
+ break;
+ case DLADM_STATUS_ISCONN:
+ s = "already connected";
+ break;
+ case DLADM_STATUS_NOTCONN:
+ s = "not connected";
+ break;
+ case DLADM_STATUS_REPOSITORYINVAL:
+ s = "invalid configuration repository";
+ break;
+ case DLADM_STATUS_MACADDRINVAL:
+ s = "invalid MAC address";
+ break;
+ case DLADM_STATUS_KEYINVAL:
+ s = "invalid key";
+ break;
default:
s = "<unknown error>";
break;
@@ -558,21 +329,3 @@ dladm_set_rootdir(const char *rootdir)
(void) closedir(dp);
return (DLADM_STATUS_OK);
}
-
-/*
- * Do a "hold" operation to a link.
- */
-int
-dladm_hold_link(const char *name, zoneid_t zoneid, boolean_t docheck)
-{
- return (i_dladm_hold_link(name, zoneid, docheck));
-}
-
-/*
- * Do a "release" operation to a link.
- */
-int
-dladm_rele_link(const char *name, zoneid_t zoneid, boolean_t docheck)
-{
- return (i_dladm_rele_link(name, zoneid, docheck));
-}
diff --git a/usr/src/lib/libdladm/common/libdladm.h b/usr/src/lib/libdladm/common/libdladm.h
index 7421ab1445..7cafd51d48 100644
--- a/usr/src/lib/libdladm/common/libdladm.h
+++ b/usr/src/lib/libdladm/common/libdladm.h
@@ -28,23 +28,17 @@
#pragma ident "%Z%%M% %I% %E% SMI"
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/dls.h>
+/*
+ * This file includes structures, macros and common routines shared by all
+ * data-link administration, and routines which do not directly administrate
+ * links. For example, dladm_status2str().
+ */
#ifdef __cplusplus
extern "C" {
#endif
-typedef struct dladm_attr {
- char da_dev[MAXNAMELEN];
- uint_t da_max_sdu;
- uint16_t da_vid;
-} dladm_attr_t;
-
#define DLADM_STRSIZE 256
-#define DLADM_SECOBJ_VAL_MAX 256
-#define DLADM_PROP_VAL_MAX 256
#define DLADM_OPT_TEMP 0x00000001
#define DLADM_OPT_CREATE 0x00000002
#define DLADM_OPT_PERSIST 0x00000004
@@ -65,7 +59,13 @@ typedef enum {
DLADM_STATUS_DBNOTFOUND,
DLADM_STATUS_DENIED,
DLADM_STATUS_IOERR,
- DLADM_STATUS_TEMPONLY
+ DLADM_STATUS_TEMPONLY,
+ DLADM_STATUS_TIMEDOUT,
+ DLADM_STATUS_ISCONN,
+ DLADM_STATUS_NOTCONN,
+ DLADM_STATUS_REPOSITORYINVAL,
+ DLADM_STATUS_MACADDRINVAL,
+ DLADM_STATUS_KEYINVAL
} dladm_status_t;
typedef enum {
@@ -75,41 +75,8 @@ typedef enum {
DLADM_PROP_VAL_PERSISTENT
} dladm_prop_type_t;
-#define DLADM_SECOBJ_CLASS_WEP 0
-typedef int dladm_secobj_class_t;
-
-typedef void (dladm_walkcb_t)(void *, const char *);
-
-extern int dladm_walk(dladm_walkcb_t *, void *);
-extern int dladm_walk_vlan(dladm_walkcb_t *, void *, const char *);
-extern int dladm_info(const char *, dladm_attr_t *);
-extern int dladm_hold_link(const char *, zoneid_t, boolean_t);
-extern int dladm_rele_link(const char *, zoneid_t, boolean_t);
-
-extern dladm_status_t dladm_set_prop(const char *, const char *,
- char **, uint_t, uint_t, char **);
-extern dladm_status_t dladm_get_prop(const char *, dladm_prop_type_t,
- const char *, char **, uint_t *);
-extern dladm_status_t dladm_walk_prop(const char *, void *,
- boolean_t (*)(void *, const char *));
-extern boolean_t dladm_is_prop_temponly(const char *, char **);
-
-extern dladm_status_t dladm_set_secobj(const char *, dladm_secobj_class_t,
- uint8_t *, uint_t, uint_t);
-extern dladm_status_t dladm_get_secobj(const char *, dladm_secobj_class_t *,
- uint8_t *, uint_t *, uint_t);
-extern dladm_status_t dladm_unset_secobj(const char *, uint_t);
-extern dladm_status_t dladm_walk_secobj(void *,
- boolean_t (*)(void *, const char *), uint_t);
-
extern const char *dladm_status2str(dladm_status_t, char *);
-extern const char *dladm_secobjclass2str(dladm_secobj_class_t, char *);
-extern dladm_status_t dladm_str2secobjclass(const char *,
- dladm_secobj_class_t *);
-
-extern dladm_status_t dladm_init_linkprop(void);
-extern dladm_status_t dladm_init_secobj(void);
-extern dladm_status_t dladm_set_rootdir(const char *rootdir);
+extern dladm_status_t dladm_set_rootdir(const char *);
#ifdef __cplusplus
}
diff --git a/usr/src/lib/liblaadm/common/liblaadm.c b/usr/src/lib/libdladm/common/libdlaggr.c
index 3b23a5999d..0d0e862973 100644
--- a/usr/src/lib/liblaadm/common/liblaadm.c
+++ b/usr/src/lib/libdladm/common/libdlaggr.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -38,7 +38,8 @@
#include <libintl.h>
#include <net/if_types.h>
#include <net/if_dl.h>
-#include <liblaadm.h>
+#include <libdlaggr.h>
+#include <libdladm_impl.h>
/*
* Link Aggregation Administration Library.
@@ -69,26 +70,24 @@
* <lacp-timer> ::= 'short' | 'long'
*/
-#define LAADM_DEV "/devices/pseudo/aggr@0:" AGGR_DEVNAME_CTL
-#define LAADM_DB "/etc/dladm/aggregation.conf"
-#define LAADM_DB_TMP "/etc/dladm/aggregation.conf.new"
-#define LAADM_DB_LOCK "/tmp/aggregation.conf.lock"
+#define DLADM_AGGR_DEV "/devices/pseudo/aggr@0:" AGGR_DEVNAME_CTL
+#define DLADM_AGGR_DB "/etc/dladm/aggregation.conf"
+#define DLADM_AGGR_DB_TMP "/etc/dladm/aggregation.conf.new"
+#define DLADM_AGGR_DB_LOCK "/tmp/aggregation.conf.lock"
-#define LAADM_DB_PERMS S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
-#define LAADM_DB_OWNER 15 /* "dladm" UID */
-#define LAADM_DB_GROUP 3 /* "sys" GID */
+#define DLADM_AGGR_DB_PERMS S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
+#define DLADM_AGGR_DB_OWNER 15 /* "dladm" UID */
+#define DLADM_AGGR_DB_GROUP 3 /* "sys" GID */
/*
* The largest configurable aggregation key. Because by default the key is
* used as the DLPI device PPA and default VLAN PPA's are calculated as
* ((1000 * vid) + PPA), the largest key can't be > 999.
*/
-#define LAADM_MAX_KEY 999
+#define DLADM_AGGR_MAX_KEY 999
#define BLANK_LINE(s) ((s[0] == '\0') || (s[0] == '#') || (s[0] == '\n'))
-#define MAXLINELEN 1024
-
/* Limits on buffer size for LAIOC_INFO request */
#define MIN_INFO_SIZE (4*1024)
#define MAX_INFO_SIZE (128*1024)
@@ -98,35 +97,35 @@
static uchar_t zero_mac[] = {0, 0, 0, 0, 0, 0};
/* configuration database entry */
-typedef struct laadm_grp_attr_db {
+typedef struct dladm_aggr_grp_attr_db {
uint32_t lt_key;
uint32_t lt_policy;
uint32_t lt_nports;
- laadm_port_attr_db_t *lt_ports;
+ dladm_aggr_port_attr_db_t *lt_ports;
boolean_t lt_mac_fixed;
uchar_t lt_mac[ETHERADDRL];
aggr_lacp_mode_t lt_lacp_mode;
aggr_lacp_timer_t lt_lacp_timer;
-} laadm_grp_attr_db_t;
+} dladm_aggr_grp_attr_db_t;
-typedef struct laadm_up {
+typedef struct dladm_aggr_up {
uint32_t lu_key;
boolean_t lu_found;
int lu_fd;
-} laadm_up_t;
+} dladm_aggr_up_t;
-typedef struct laadm_down {
+typedef struct dladm_aggr_down {
uint32_t ld_key;
boolean_t ld_found;
-} laadm_down_t;
+} dladm_aggr_down_t;
-typedef struct laadm_modify_attr {
+typedef struct dladm_aggr_modify_attr {
uint32_t ld_policy;
boolean_t ld_mac_fixed;
uchar_t ld_mac[ETHERADDRL];
aggr_lacp_mode_t ld_lacp_mode;
aggr_lacp_timer_t ld_lacp_timer;
-} laadm_modify_attr_t;
+} dladm_aggr_modify_attr_t;
typedef struct policy_s {
char *pol_name;
@@ -140,52 +139,64 @@ static policy_t policies[] = {
#define NPOLICIES (sizeof (policies) / sizeof (policy_t))
-typedef struct laadm_lacp_mode_s {
+typedef struct dladm_aggr_lacpmode_s {
char *mode_str;
aggr_lacp_mode_t mode_id;
-} laadm_lacp_mode_t;
+} dladm_aggr_lacpmode_t;
-static laadm_lacp_mode_t lacp_modes[] = {
+static dladm_aggr_lacpmode_t lacp_modes[] = {
{"off", AGGR_LACP_OFF},
{"active", AGGR_LACP_ACTIVE},
{"passive", AGGR_LACP_PASSIVE}};
-#define NLACP_MODES (sizeof (lacp_modes) / sizeof (laadm_lacp_mode_t))
+#define NLACP_MODES (sizeof (lacp_modes) / sizeof (dladm_aggr_lacpmode_t))
-typedef struct laadm_lacp_timer_s {
+typedef struct dladm_aggr_lacptimer_s {
char *lt_str;
aggr_lacp_timer_t lt_id;
-} laadm_lacp_timer_t;
+} dladm_aggr_lacptimer_t;
-static laadm_lacp_timer_t lacp_timers[] = {
+static dladm_aggr_lacptimer_t lacp_timers[] = {
{"short", AGGR_LACP_TIMER_SHORT},
{"long", AGGR_LACP_TIMER_LONG}};
-#define NLACP_TIMERS (sizeof (lacp_timers) / sizeof (laadm_lacp_timer_t))
+#define NLACP_TIMERS (sizeof (lacp_timers) / sizeof (dladm_aggr_lacptimer_t))
+
+typedef struct dladm_aggr_port_state {
+ char *state_str;
+ aggr_port_state_t state_id;
+} dladm_aggr_port_state_t;
+
+static dladm_aggr_port_state_t port_states[] = {
+ {"standby", AGGR_PORT_STATE_STANDBY },
+ {"attached", AGGR_PORT_STATE_ATTACHED }
+};
+
+#define NPORT_STATES \
+ (sizeof (port_states) / sizeof (dladm_aggr_port_state_t))
typedef struct delete_db_state {
uint32_t ds_key;
boolean_t ds_found;
} delete_db_state_t;
-
typedef struct modify_db_state {
- uint32_t us_key;
+ uint32_t us_key;
uint32_t us_mask;
- laadm_modify_attr_t *us_attr_new;
- laadm_modify_attr_t *us_attr_old;
- boolean_t us_found;
+ dladm_aggr_modify_attr_t *us_attr_new;
+ dladm_aggr_modify_attr_t *us_attr_old;
+ boolean_t us_found;
} modify_db_state_t;
typedef struct add_db_state {
- laadm_grp_attr_db_t *as_attr;
+ dladm_aggr_grp_attr_db_t *as_attr;
boolean_t as_found;
} add_db_state_t;
-static int i_laadm_fput_grp(FILE *, laadm_grp_attr_db_t *);
+static int i_dladm_aggr_fput_grp(FILE *, dladm_aggr_grp_attr_db_t *);
static int
-i_laadm_strioctl(int fd, int cmd, void *ptr, int ilen)
+i_dladm_aggr_strioctl(int fd, int cmd, void *ptr, int ilen)
{
struct strioctl str;
@@ -202,13 +213,14 @@ i_laadm_strioctl(int fd, int cmd, void *ptr, int ilen)
* acquired as a reader (F_RDLCK) or writer (F_WRLCK).
*/
static int
-i_laadm_lock_db(short type)
+i_dladm_aggr_lock_db(short type)
{
int lock_fd;
struct flock lock;
+ int errno_save;
- if ((lock_fd = open(LAADM_DB_LOCK, O_RDWR | O_CREAT | O_TRUNC,
- LAADM_DB_PERMS)) < 0)
+ if ((lock_fd = open(DLADM_AGGR_DB_LOCK, O_RDWR | O_CREAT | O_TRUNC,
+ DLADM_AGGR_DB_PERMS)) < 0)
return (-1);
lock.l_type = type;
@@ -217,8 +229,10 @@ i_laadm_lock_db(short type)
lock.l_len = 0;
if (fcntl(lock_fd, F_SETLKW, &lock) < 0) {
+ errno_save = errno;
(void) close(lock_fd);
- (void) unlink(LAADM_DB_LOCK);
+ (void) unlink(DLADM_AGGR_DB_LOCK);
+ errno = errno_save;
return (-1);
}
return (lock_fd);
@@ -228,7 +242,7 @@ i_laadm_lock_db(short type)
* Unlock and close the specified file.
*/
static void
-i_laadm_unlock_db(int fd)
+i_dladm_aggr_unlock_db(int fd)
{
struct flock lock;
@@ -242,7 +256,7 @@ i_laadm_unlock_db(int fd)
(void) fcntl(fd, F_SETLKW, &lock);
(void) close(fd);
- (void) unlink(LAADM_DB_LOCK);
+ (void) unlink(DLADM_AGGR_DB_LOCK);
}
/*
@@ -251,16 +265,16 @@ i_laadm_unlock_db(int fd)
* Terminate the walk if at any time <fn> returns non-NULL value
*/
int
-laadm_walk_sys(int (*fn)(void *, laadm_grp_attr_sys_t *), void *arg)
+dladm_aggr_walk(int (*fn)(void *, dladm_aggr_grp_attr_t *), void *arg)
{
laioc_info_t *ioc;
laioc_info_group_t *grp;
laioc_info_port_t *port;
- laadm_grp_attr_sys_t attr;
+ dladm_aggr_grp_attr_t attr;
int rc, i, j, bufsize, fd;
char *where;
- if ((fd = open(LAADM_DEV, O_RDWR)) == -1)
+ if ((fd = open(DLADM_AGGR_DEV, O_RDWR)) == -1)
return (-1);
bufsize = MIN_INFO_SIZE;
@@ -272,7 +286,7 @@ laadm_walk_sys(int (*fn)(void *, laadm_grp_attr_sys_t *), void *arg)
}
tryagain:
- rc = i_laadm_strioctl(fd, LAIOC_INFO, ioc, bufsize);
+ rc = i_dladm_aggr_strioctl(fd, LAIOC_INFO, ioc, bufsize);
if (rc != 0) {
if (errno == ENOSPC) {
@@ -310,7 +324,7 @@ tryagain:
attr.lg_mac_fixed = grp->lg_mac_fixed;
attr.lg_ports = malloc(grp->lg_nports *
- sizeof (laadm_port_attr_sys_t));
+ sizeof (dladm_aggr_port_attr_t));
if (attr.lg_ports == NULL) {
errno = ENOMEM;
goto bail;
@@ -356,7 +370,7 @@ bail:
* Returns -1 on parsing failure, or 0 on success.
*/
static int
-i_laadm_parse_db(char *line, laadm_grp_attr_db_t *attr)
+i_dladm_aggr_parse_db(char *line, dladm_aggr_grp_attr_db_t *attr)
{
char *token;
int i;
@@ -379,7 +393,7 @@ i_laadm_parse_db(char *line, laadm_grp_attr_db_t *attr)
/* policy */
if ((token = strtok_r(NULL, " \t", &lasts)) == NULL ||
- !laadm_str_to_policy(token, &attr->lt_policy))
+ !dladm_aggr_str2policy(token, &attr->lt_policy))
goto failed;
/* number of ports */
@@ -395,7 +409,7 @@ i_laadm_parse_db(char *line, laadm_grp_attr_db_t *attr)
/* ports */
if ((attr->lt_ports = malloc(attr->lt_nports *
- sizeof (laadm_port_attr_db_t))) == NULL)
+ sizeof (dladm_aggr_port_attr_db_t))) == NULL)
goto failed;
for (i = 0; i < attr->lt_nports; i++) {
@@ -419,18 +433,18 @@ i_laadm_parse_db(char *line, laadm_grp_attr_db_t *attr)
/* unicast MAC address */
if ((token = strtok_r(NULL, " \t\n", &lasts)) == NULL ||
- !laadm_str_to_mac_addr(token, &attr->lt_mac_fixed,
+ !dladm_aggr_str2macaddr(token, &attr->lt_mac_fixed,
attr->lt_mac))
goto failed;
/* LACP mode */
if ((token = strtok_r(NULL, " \t\n", &lasts)) == NULL ||
- !laadm_str_to_lacp_mode(token, &attr->lt_lacp_mode))
+ !dladm_aggr_str2lacpmode(token, &attr->lt_lacp_mode))
attr->lt_lacp_mode = AGGR_LACP_OFF;
/* LACP timer */
if ((token = strtok_r(NULL, " \t\n", &lasts)) == NULL ||
- !laadm_str_to_lacp_timer(token, &attr->lt_lacp_timer))
+ !dladm_aggr_str2lacptimer(token, &attr->lt_lacp_timer))
attr->lt_lacp_timer = AGGR_LACP_TIMER_SHORT;
return (0);
@@ -445,31 +459,32 @@ failed:
* Walk through the groups defined in the DB and for each group <grp>,
* invoke <fn>(<arg>, <grp>);
*/
-static int
-i_laadm_walk_db(int (*fn)(void *, laadm_grp_attr_db_t *, laadm_diag_t *),
- void *arg, const char *root, laadm_diag_t *diag)
+static dladm_status_t
+i_dladm_aggr_walk_db(dladm_status_t (*fn)(void *, dladm_aggr_grp_attr_db_t *),
+ void *arg, const char *root)
{
FILE *fp;
char line[MAXLINELEN];
- laadm_grp_attr_db_t attr;
+ dladm_aggr_grp_attr_db_t attr;
char *db_file;
char db_file_buf[MAXPATHLEN];
- int lock_fd, retval = -1;
+ int lock_fd;
+ dladm_status_t status = DLADM_STATUS_OK;
if (root == NULL) {
- db_file = LAADM_DB;
+ db_file = DLADM_AGGR_DB;
} else {
(void) snprintf(db_file_buf, MAXPATHLEN, "%s%s", root,
- LAADM_DB);
+ DLADM_AGGR_DB);
db_file = db_file_buf;
}
- lock_fd = i_laadm_lock_db(F_RDLCK);
+ lock_fd = i_dladm_aggr_lock_db(F_RDLCK);
if ((fp = fopen(db_file, "r")) == NULL) {
- i_laadm_unlock_db(lock_fd);
- *diag = LAADM_DIAG_REPOSITORY_OPENFAIL;
- return (-1);
+ status = dladm_errno2status(errno);
+ i_dladm_aggr_unlock_db(lock_fd);
+ return (status);
}
bzero(&attr, sizeof (attr));
@@ -479,41 +494,42 @@ i_laadm_walk_db(int (*fn)(void *, laadm_grp_attr_db_t *, laadm_diag_t *),
if (BLANK_LINE(line))
continue;
- if (i_laadm_parse_db(line, &attr) != 0) {
- errno = EFAULT;
- *diag = LAADM_DIAG_REPOSITORY_PARSEFAIL;
- goto failed;
+ if (i_dladm_aggr_parse_db(line, &attr) != 0) {
+ status = DLADM_STATUS_REPOSITORYINVAL;
+ goto done;
}
- if (fn(arg, &attr, diag) != 0)
- goto failed;
+ if ((status = fn(arg, &attr)) != DLADM_STATUS_OK)
+ goto done;
free(attr.lt_ports);
attr.lt_ports = NULL;
}
- retval = 0;
-failed:
+done:
free(attr.lt_ports);
(void) fclose(fp);
- i_laadm_unlock_db(lock_fd);
- return (retval);
+ i_dladm_aggr_unlock_db(lock_fd);
+ return (status);
}
/*
* Send an add or remove command to the link aggregation driver.
*/
-static int
-i_laadm_add_rem_sys(laadm_grp_attr_db_t *attr, int cmd, laadm_diag_t *diag)
+static dladm_status_t
+i_dladm_aggr_add_rem_sys(dladm_aggr_grp_attr_db_t *attr, int cmd)
{
int i, rc, fd, len;
laioc_add_rem_t *iocp;
laioc_port_t *ports;
+ dladm_status_t status = DLADM_STATUS_OK;
len = sizeof (*iocp) + attr->lt_nports * sizeof (laioc_port_t);
iocp = malloc(len);
- if (iocp == NULL)
- goto failed;
+ if (iocp == NULL) {
+ status = DLADM_STATUS_NOMEM;
+ goto done;
+ }
iocp->la_key = attr->lt_key;
iocp->la_nports = attr->lt_nports;
@@ -522,49 +538,53 @@ i_laadm_add_rem_sys(laadm_grp_attr_db_t *attr, int cmd, laadm_diag_t *diag)
for (i = 0; i < attr->lt_nports; i++) {
if (strlcpy(ports[i].lp_devname,
attr->lt_ports[i].lp_devname,
- MAXNAMELEN) >= MAXNAMELEN)
- goto failed;
+ MAXNAMELEN) >= MAXNAMELEN) {
+ status = DLADM_STATUS_BADARG;
+ goto done;
+ }
}
- if ((fd = open(LAADM_DEV, O_RDWR)) < 0) {
- *diag = LAADM_DIAG_REPOSITORY_OPENFAIL;
- goto failed;
+ if ((fd = open(DLADM_AGGR_DEV, O_RDWR)) < 0) {
+ status = dladm_errno2status(errno);
+ goto done;
}
- rc = i_laadm_strioctl(fd, cmd, iocp, len);
- if ((rc < 0) && (errno == EINVAL))
- *diag = LAADM_DIAG_INVALID_INTFNAME;
+ rc = i_dladm_aggr_strioctl(fd, cmd, iocp, len);
+ if (rc < 0) {
+ if (errno == EINVAL)
+ status = DLADM_STATUS_LINKINVAL;
+ else
+ status = dladm_errno2status(errno);
+ }
(void) close(fd);
+done:
free(iocp);
- return (rc);
-
-failed:
- free(iocp);
- return (-1);
+ return (status);
}
/*
* Send a modify command to the link aggregation driver.
*/
-static int
-i_laadm_modify_sys(uint32_t key, uint32_t mask, laadm_modify_attr_t *attr,
- laadm_diag_t *diag)
+static dladm_status_t
+i_dladm_aggr_modify_sys(uint32_t key, uint32_t mask,
+ dladm_aggr_modify_attr_t *attr)
{
int rc, fd;
laioc_modify_t ioc;
+ dladm_status_t status = DLADM_STATUS_OK;
ioc.lu_key = key;
ioc.lu_modify_mask = 0;
- if (mask & LAADM_MODIFY_POLICY)
+ if (mask & DLADM_AGGR_MODIFY_POLICY)
ioc.lu_modify_mask |= LAIOC_MODIFY_POLICY;
- if (mask & LAADM_MODIFY_MAC)
+ if (mask & DLADM_AGGR_MODIFY_MAC)
ioc.lu_modify_mask |= LAIOC_MODIFY_MAC;
- if (mask & LAADM_MODIFY_LACP_MODE)
+ if (mask & DLADM_AGGR_MODIFY_LACP_MODE)
ioc.lu_modify_mask |= LAIOC_MODIFY_LACP_MODE;
- if (mask & LAADM_MODIFY_LACP_TIMER)
+ if (mask & DLADM_AGGR_MODIFY_LACP_TIMER)
ioc.lu_modify_mask |= LAIOC_MODIFY_LACP_TIMER;
ioc.lu_policy = attr->ld_policy;
@@ -573,34 +593,36 @@ i_laadm_modify_sys(uint32_t key, uint32_t mask, laadm_modify_attr_t *attr,
ioc.lu_lacp_mode = attr->ld_lacp_mode;
ioc.lu_lacp_timer = attr->ld_lacp_timer;
- if ((fd = open(LAADM_DEV, O_RDWR)) < 0) {
- *diag = LAADM_DIAG_REPOSITORY_OPENFAIL;
- return (-1);
- }
+ if ((fd = open(DLADM_AGGR_DEV, O_RDWR)) < 0)
+ return (dladm_errno2status(errno));
- rc = i_laadm_strioctl(fd, LAIOC_MODIFY, &ioc, sizeof (ioc));
- if ((rc < 0) && (errno == EINVAL))
- *diag = LAADM_DIAG_INVALID_MACADDR;
+ rc = i_dladm_aggr_strioctl(fd, LAIOC_MODIFY, &ioc, sizeof (ioc));
+ if (rc < 0) {
+ if (errno == EINVAL)
+ status = DLADM_STATUS_MACADDRINVAL;
+ else
+ status = dladm_errno2status(errno);
+ }
(void) close(fd);
-
- return (rc);
+ return (status);
}
/*
* Send a create command to the link aggregation driver.
*/
-static int
-i_laadm_create_sys(int fd, laadm_grp_attr_db_t *attr, laadm_diag_t *diag)
+static dladm_status_t
+i_dladm_aggr_create_sys(int fd, dladm_aggr_grp_attr_db_t *attr)
{
int i, rc, len;
laioc_create_t *iocp;
laioc_port_t *ports;
+ dladm_status_t status = DLADM_STATUS_OK;
len = sizeof (*iocp) + attr->lt_nports * sizeof (laioc_port_t);
iocp = malloc(len);
if (iocp == NULL)
- return (-1);
+ return (DLADM_STATUS_NOMEM);
iocp->lc_key = attr->lt_key;
iocp->lc_nports = attr->lt_nports;
@@ -614,71 +636,70 @@ i_laadm_create_sys(int fd, laadm_grp_attr_db_t *attr, laadm_diag_t *diag)
if (strlcpy(ports[i].lp_devname,
attr->lt_ports[i].lp_devname,
MAXNAMELEN) >= MAXNAMELEN) {
- errno = EINVAL;
free(iocp);
- return (-1);
+ return (DLADM_STATUS_BADARG);
}
}
if (attr->lt_mac_fixed &&
((bcmp(zero_mac, attr->lt_mac, ETHERADDRL) == 0) ||
(attr->lt_mac[0] & 0x01))) {
- errno = EINVAL;
- *diag = LAADM_DIAG_INVALID_MACADDR;
free(iocp);
- return (-1);
+ return (DLADM_STATUS_MACADDRINVAL);
}
bcopy(attr->lt_mac, iocp->lc_mac, ETHERADDRL);
iocp->lc_mac_fixed = attr->lt_mac_fixed;
- rc = i_laadm_strioctl(fd, LAIOC_CREATE, iocp, len);
+ rc = i_dladm_aggr_strioctl(fd, LAIOC_CREATE, iocp, len);
if (rc < 0)
- *diag = LAADM_DIAG_INVALID_INTFNAME;
+ status = DLADM_STATUS_LINKINVAL;
free(iocp);
- return (rc);
+ return (status);
}
/*
* Invoked to bring up a link aggregation group.
*/
-static int
-i_laadm_up(void *arg, laadm_grp_attr_db_t *attr, laadm_diag_t *diag)
+static dladm_status_t
+i_dladm_aggr_up(void *arg, dladm_aggr_grp_attr_db_t *attr)
{
- laadm_up_t *up = (laadm_up_t *)arg;
+ dladm_aggr_up_t *up = (dladm_aggr_up_t *)arg;
+ dladm_status_t status;
if (up->lu_key != 0 && up->lu_key != attr->lt_key)
- return (0);
+ return (DLADM_STATUS_OK);
up->lu_found = B_TRUE;
- if (i_laadm_create_sys(up->lu_fd, attr, diag) < 0 &&
- up->lu_key != 0) {
- return (-1);
- }
+ status = i_dladm_aggr_create_sys(up->lu_fd, attr);
+ if (status != DLADM_STATUS_OK && up->lu_key != 0)
+ return (status);
- return (0);
+ return (DLADM_STATUS_OK);
}
/*
* Bring up a link aggregation group or all of them if the key is zero.
* If key is 0, walk may terminate early if any of the links fail
*/
-int
-laadm_up(uint32_t key, const char *root, laadm_diag_t *diag)
+dladm_status_t
+dladm_aggr_up(uint32_t key, const char *root)
{
- laadm_up_t up;
+ dladm_aggr_up_t up;
+ dladm_status_t status;
- if ((up.lu_fd = open(LAADM_DEV, O_RDWR)) < 0)
- return (-1);
+ if ((up.lu_fd = open(DLADM_AGGR_DEV, O_RDWR)) < 0)
+ return (dladm_errno2status(errno));
up.lu_key = key;
up.lu_found = B_FALSE;
- if (i_laadm_walk_db(i_laadm_up, &up, root, diag) < 0) {
+ status = i_dladm_aggr_walk_db(i_dladm_aggr_up, &up, root);
+ if (status != DLADM_STATUS_OK) {
(void) close(up.lu_fd);
- return (-1);
+ return (status);
}
(void) close(up.lu_fd);
@@ -686,45 +707,45 @@ laadm_up(uint32_t key, const char *root, laadm_diag_t *diag)
* only return error if user specified key and key was
* not found
*/
- if (!up.lu_found && key != 0) {
- errno = ENOENT;
- return (-1);
- }
+ if (!up.lu_found && key != 0)
+ return (DLADM_STATUS_NOTFOUND);
- return (0);
+ return (DLADM_STATUS_OK);
}
/*
* Send a delete command to the link aggregation driver.
*/
static int
-i_laadm_delete_sys(int fd, laadm_grp_attr_sys_t *attr)
+i_dladm_aggr_delete_sys(int fd, dladm_aggr_grp_attr_t *attr)
{
laioc_delete_t ioc;
ioc.ld_key = attr->lg_key;
- return (i_laadm_strioctl(fd, LAIOC_DELETE, &ioc, sizeof (ioc)));
+ return (i_dladm_aggr_strioctl(fd, LAIOC_DELETE, &ioc, sizeof (ioc)));
}
/*
* Invoked to bring down a link aggregation group.
*/
static int
-i_laadm_down(void *arg, laadm_grp_attr_sys_t *attr)
+i_dladm_aggr_down(void *arg, dladm_aggr_grp_attr_t *attr)
{
- laadm_down_t *down = (laadm_down_t *)arg;
- int fd;
+ dladm_aggr_down_t *down = (dladm_aggr_down_t *)arg;
+ int fd, errno_save;
if (down->ld_key != 0 && down->ld_key != attr->lg_key)
return (0);
down->ld_found = B_TRUE;
- if ((fd = open(LAADM_DEV, O_RDWR)) < 0)
+ if ((fd = open(DLADM_AGGR_DEV, O_RDWR)) < 0)
return (-1);
- if (i_laadm_delete_sys(fd, attr) < 0 && down->ld_key != 0) {
+ if (i_dladm_aggr_delete_sys(fd, attr) < 0 && down->ld_key != 0) {
+ errno_save = errno;
(void) close(fd);
+ errno = errno_save;
return (-1);
}
@@ -736,27 +757,25 @@ i_laadm_down(void *arg, laadm_grp_attr_sys_t *attr)
* Bring down a link aggregation group or all of them if the key is zero.
* If key is 0, walk may terminate early if any of the links fail
*/
-int
-laadm_down(uint32_t key)
+dladm_status_t
+dladm_aggr_down(uint32_t key)
{
- laadm_down_t down;
+ dladm_aggr_down_t down;
down.ld_key = key;
down.ld_found = B_FALSE;
- if (laadm_walk_sys(i_laadm_down, &down) < 0)
- return (-1);
+ if (dladm_aggr_walk(i_dladm_aggr_down, &down) < 0)
+ return (dladm_errno2status(errno));
/*
* only return error if user specified key and key was
* not found
*/
- if (!down.ld_found && key != 0) {
- errno = ENOENT;
- return (-1);
- }
+ if (!down.ld_found && key != 0)
+ return (DLADM_STATUS_NOTFOUND);
- return (0);
+ return (DLADM_STATUS_OK);
}
/*
@@ -775,55 +794,55 @@ laadm_down(uint32_t key)
* group attributes to the new DB, but should continue walking
* the entries found in the DB.
*/
-static int
-i_laadm_walk_rw_db(int (*fn)(void *, laadm_grp_attr_db_t *),
- void *arg,
- const char *root,
- laadm_diag_t *diag)
+static dladm_status_t
+i_dladm_aggr_walk_rw_db(int (*fn)(void *, dladm_aggr_grp_attr_db_t *),
+ void *arg, const char *root)
{
FILE *fp, *nfp;
int nfd, fn_rc, lock_fd;
char line[MAXLINELEN];
- laadm_grp_attr_db_t attr;
+ dladm_aggr_grp_attr_db_t attr;
char *db_file, *tmp_db_file;
char db_file_buf[MAXPATHLEN];
char tmp_db_file_buf[MAXPATHLEN];
+ dladm_status_t status;
if (root == NULL) {
- db_file = LAADM_DB;
- tmp_db_file = LAADM_DB_TMP;
+ db_file = DLADM_AGGR_DB;
+ tmp_db_file = DLADM_AGGR_DB_TMP;
} else {
(void) snprintf(db_file_buf, MAXPATHLEN, "%s%s", root,
- LAADM_DB);
+ DLADM_AGGR_DB);
(void) snprintf(tmp_db_file_buf, MAXPATHLEN, "%s%s", root,
- LAADM_DB_TMP);
+ DLADM_AGGR_DB_TMP);
db_file = db_file_buf;
tmp_db_file = tmp_db_file_buf;
}
- if ((lock_fd = i_laadm_lock_db(F_WRLCK)) < 0)
- return (-1);
+ if ((lock_fd = i_dladm_aggr_lock_db(F_WRLCK)) < 0)
+ return (dladm_errno2status(errno));
if ((fp = fopen(db_file, "r")) == NULL) {
- i_laadm_unlock_db(lock_fd);
- *diag = LAADM_DIAG_REPOSITORY_OPENFAIL;
- return (-1);
+ status = dladm_errno2status(errno);
+ i_dladm_aggr_unlock_db(lock_fd);
+ return (status);
}
if ((nfd = open(tmp_db_file, O_WRONLY|O_CREAT|O_TRUNC,
- LAADM_DB_PERMS)) == -1) {
+ DLADM_AGGR_DB_PERMS)) == -1) {
+ status = dladm_errno2status(errno);
(void) fclose(fp);
- i_laadm_unlock_db(lock_fd);
- return (-1);
+ i_dladm_aggr_unlock_db(lock_fd);
+ return (status);
}
if ((nfp = fdopen(nfd, "w")) == NULL) {
+ status = dladm_errno2status(errno);
(void) close(nfd);
(void) fclose(fp);
(void) unlink(tmp_db_file);
- i_laadm_unlock_db(lock_fd);
- *diag = LAADM_DIAG_REPOSITORY_OPENFAIL;
- return (-1);
+ i_dladm_aggr_unlock_db(lock_fd);
+ return (status);
}
attr.lt_ports = NULL;
@@ -832,14 +851,15 @@ i_laadm_walk_rw_db(int (*fn)(void *, laadm_grp_attr_db_t *),
/* skip comments */
if (BLANK_LINE(line)) {
- if (fputs(line, nfp) == EOF)
+ if (fputs(line, nfp) == EOF) {
+ status = dladm_errno2status(errno);
goto failed;
+ }
continue;
}
- if (i_laadm_parse_db(line, &attr) != 0) {
- errno = EFAULT;
- *diag = LAADM_DIAG_REPOSITORY_PARSEFAIL;
+ if (i_dladm_aggr_parse_db(line, &attr) != 0) {
+ status = DLADM_STATUS_REPOSITORYINVAL;
goto failed;
}
@@ -848,14 +868,17 @@ i_laadm_walk_rw_db(int (*fn)(void *, laadm_grp_attr_db_t *),
switch (fn_rc) {
case -1:
/* failure, stop walking */
+ status = dladm_errno2status(errno);
goto failed;
case 0:
/*
* Success, write group attributes, which could
* have been modified by fn().
*/
- if (i_laadm_fput_grp(nfp, &attr) != 0)
+ if (i_dladm_aggr_fput_grp(nfp, &attr) != 0) {
+ status = dladm_errno2status(errno);
goto failed;
+ }
break;
case 1:
/* skip current group */
@@ -867,43 +890,51 @@ i_laadm_walk_rw_db(int (*fn)(void *, laadm_grp_attr_db_t *),
}
if (getuid() == 0 || geteuid() == 0) {
- if (fchmod(nfd, LAADM_DB_PERMS) == -1)
+ if (fchmod(nfd, DLADM_AGGR_DB_PERMS) == -1) {
+ status = dladm_errno2status(errno);
goto failed;
+ }
- if (fchown(nfd, LAADM_DB_OWNER, LAADM_DB_GROUP) == -1)
+ if (fchown(nfd, DLADM_AGGR_DB_OWNER,
+ DLADM_AGGR_DB_GROUP) == -1) {
+ status = dladm_errno2status(errno);
goto failed;
+ }
}
- if (fflush(nfp) == EOF)
+ if (fflush(nfp) == EOF) {
+ status = dladm_errno2status(errno);
goto failed;
+ }
(void) fclose(fp);
(void) fclose(nfp);
if (rename(tmp_db_file, db_file) == -1) {
+ status = dladm_errno2status(errno);
(void) unlink(tmp_db_file);
- i_laadm_unlock_db(lock_fd);
- return (-1);
+ i_dladm_aggr_unlock_db(lock_fd);
+ return (status);
}
- i_laadm_unlock_db(lock_fd);
- return (0);
+ i_dladm_aggr_unlock_db(lock_fd);
+ return (DLADM_STATUS_OK);
failed:
free(attr.lt_ports);
(void) fclose(fp);
(void) fclose(nfp);
(void) unlink(tmp_db_file);
- i_laadm_unlock_db(lock_fd);
+ i_dladm_aggr_unlock_db(lock_fd);
- return (-1);
+ return (status);
}
/*
* Remove an entry from the DB.
*/
static int
-i_laadm_delete_db_fn(void *arg, laadm_grp_attr_db_t *grp)
+i_dladm_aggr_del_db_fn(void *arg, dladm_aggr_grp_attr_db_t *grp)
{
delete_db_state_t *state = arg;
@@ -916,49 +947,47 @@ i_laadm_delete_db_fn(void *arg, laadm_grp_attr_db_t *grp)
return (1);
}
-static int
-i_laadm_delete_db(laadm_grp_attr_db_t *attr, const char *root,
- laadm_diag_t *diag)
+static dladm_status_t
+i_dladm_aggr_del_db(dladm_aggr_grp_attr_db_t *attr, const char *root)
{
delete_db_state_t state;
+ dladm_status_t status;
state.ds_key = attr->lt_key;
state.ds_found = B_FALSE;
- if (i_laadm_walk_rw_db(i_laadm_delete_db_fn, &state, root,
- diag) != 0)
- return (-1);
+ status = i_dladm_aggr_walk_rw_db(i_dladm_aggr_del_db_fn, &state, root);
+ if (status != DLADM_STATUS_OK)
+ return (status);
- if (!state.ds_found) {
- errno = ENOENT;
- return (-1);
- }
+ if (!state.ds_found)
+ return (DLADM_STATUS_NOTFOUND);
- return (0);
+ return (DLADM_STATUS_OK);
}
/*
* Modify the properties of an existing group in the DB.
*/
static int
-i_laadm_modify_db_fn(void *arg, laadm_grp_attr_db_t *grp)
+i_dladm_aggr_modify_db_fn(void *arg, dladm_aggr_grp_attr_db_t *grp)
{
modify_db_state_t *state = arg;
- laadm_modify_attr_t *new_attr = state->us_attr_new;
- laadm_modify_attr_t *old_attr = state->us_attr_old;
+ dladm_aggr_modify_attr_t *new_attr = state->us_attr_new;
+ dladm_aggr_modify_attr_t *old_attr = state->us_attr_old;
if (grp->lt_key != state->us_key)
return (0);
state->us_found = B_TRUE;
- if (state->us_mask & LAADM_MODIFY_POLICY) {
+ if (state->us_mask & DLADM_AGGR_MODIFY_POLICY) {
if (old_attr != NULL)
old_attr->ld_policy = grp->lt_policy;
grp->lt_policy = new_attr->ld_policy;
}
- if (state->us_mask & LAADM_MODIFY_MAC) {
+ if (state->us_mask & DLADM_AGGR_MODIFY_MAC) {
if (old_attr != NULL) {
old_attr->ld_mac_fixed = grp->lt_mac_fixed;
bcopy(grp->lt_mac, old_attr->ld_mac, ETHERADDRL);
@@ -967,13 +996,13 @@ i_laadm_modify_db_fn(void *arg, laadm_grp_attr_db_t *grp)
bcopy(new_attr->ld_mac, grp->lt_mac, ETHERADDRL);
}
- if (state->us_mask & LAADM_MODIFY_LACP_MODE) {
+ if (state->us_mask & DLADM_AGGR_MODIFY_LACP_MODE) {
if (old_attr != NULL)
old_attr->ld_lacp_mode = grp->lt_lacp_mode;
grp->lt_lacp_mode = new_attr->ld_lacp_mode;
}
- if (state->us_mask & LAADM_MODIFY_LACP_TIMER) {
+ if (state->us_mask & DLADM_AGGR_MODIFY_LACP_TIMER) {
if (old_attr != NULL)
old_attr->ld_lacp_timer = grp->lt_lacp_timer;
grp->lt_lacp_timer = new_attr->ld_lacp_timer;
@@ -983,11 +1012,13 @@ i_laadm_modify_db_fn(void *arg, laadm_grp_attr_db_t *grp)
return (0);
}
-static int
-i_laadm_modify_db(uint32_t key, uint32_t mask, laadm_modify_attr_t *new,
- laadm_modify_attr_t *old, const char *root, laadm_diag_t *diag)
+static dladm_status_t
+i_dladm_aggr_modify_db(uint32_t key, uint32_t mask,
+ dladm_aggr_modify_attr_t *new, dladm_aggr_modify_attr_t *old,
+ const char *root)
{
modify_db_state_t state;
+ dladm_status_t status;
state.us_key = key;
state.us_mask = mask;
@@ -995,26 +1026,25 @@ i_laadm_modify_db(uint32_t key, uint32_t mask, laadm_modify_attr_t *new,
state.us_attr_old = old;
state.us_found = B_FALSE;
- if (i_laadm_walk_rw_db(i_laadm_modify_db_fn, &state, root,
- diag) != 0)
- return (-1);
-
- if (!state.us_found) {
- errno = ENOENT;
- return (-1);
+ if ((status = i_dladm_aggr_walk_rw_db(i_dladm_aggr_modify_db_fn,
+ &state, root)) != DLADM_STATUS_OK) {
+ return (status);
}
- return (0);
+ if (!state.us_found)
+ return (DLADM_STATUS_NOTFOUND);
+
+ return (DLADM_STATUS_OK);
}
/*
* Add ports to an existing group in the DB.
*/
static int
-i_laadm_add_db_fn(void *arg, laadm_grp_attr_db_t *grp)
+i_dladm_aggr_add_db_fn(void *arg, dladm_aggr_grp_attr_db_t *grp)
{
add_db_state_t *state = arg;
- laadm_grp_attr_db_t *attr = state->as_attr;
+ dladm_aggr_grp_attr_db_t *attr = state->as_attr;
void *ports;
int i, j;
@@ -1036,7 +1066,7 @@ i_laadm_add_db_fn(void *arg, laadm_grp_attr_db_t *grp)
/* add groups specified by attr to grp */
ports = realloc(grp->lt_ports, (grp->lt_nports +
- attr->lt_nports) * sizeof (laadm_port_attr_db_t));
+ attr->lt_nports) * sizeof (dladm_aggr_port_attr_db_t));
if (ports == NULL)
return (-1);
grp->lt_ports = ports;
@@ -1054,25 +1084,23 @@ i_laadm_add_db_fn(void *arg, laadm_grp_attr_db_t *grp)
return (0);
}
-static int
-i_laadm_add_db(laadm_grp_attr_db_t *attr, const char *root,
- laadm_diag_t *diag)
+static dladm_status_t
+i_dladm_aggr_add_db(dladm_aggr_grp_attr_db_t *attr, const char *root)
{
add_db_state_t state;
+ dladm_status_t status;
state.as_attr = attr;
state.as_found = B_FALSE;
- if (i_laadm_walk_rw_db(i_laadm_add_db_fn, &state, root,
- diag) != 0)
- return (-1);
+ status = i_dladm_aggr_walk_rw_db(i_dladm_aggr_add_db_fn, &state, root);
+ if (status != DLADM_STATUS_OK)
+ return (status);
- if (!state.as_found) {
- errno = ENOENT;
- return (-1);
- }
+ if (!state.as_found)
+ return (DLADM_STATUS_NOTFOUND);
- return (0);
+ return (DLADM_STATUS_OK);
}
/*
@@ -1080,15 +1108,15 @@ i_laadm_add_db(laadm_grp_attr_db_t *attr, const char *root,
*/
typedef struct remove_db_state {
- laadm_grp_attr_db_t *rs_attr;
+ dladm_aggr_grp_attr_db_t *rs_attr;
boolean_t rs_found;
} remove_db_state_t;
static int
-i_laadm_remove_db_fn(void *arg, laadm_grp_attr_db_t *grp)
+i_dladm_aggr_remove_db_fn(void *arg, dladm_aggr_grp_attr_db_t *grp)
{
remove_db_state_t *state = (remove_db_state_t *)arg;
- laadm_grp_attr_db_t *attr = state->rs_attr;
+ dladm_aggr_grp_attr_db_t *attr = state->rs_attr;
int i, j, k, nremoved;
boolean_t match;
@@ -1123,25 +1151,24 @@ i_laadm_remove_db_fn(void *arg, laadm_grp_attr_db_t *grp)
return (0);
}
-static int
-i_laadm_remove_db(laadm_grp_attr_db_t *attr, const char *root,
- laadm_diag_t *diag)
+static dladm_status_t
+i_dladm_aggr_remove_db(dladm_aggr_grp_attr_db_t *attr, const char *root)
{
remove_db_state_t state;
+ dladm_status_t status;
state.rs_attr = attr;
state.rs_found = B_FALSE;
- if (i_laadm_walk_rw_db(i_laadm_remove_db_fn, &state, root,
- diag) != 0)
- return (-1);
+ status = i_dladm_aggr_walk_rw_db(i_dladm_aggr_remove_db_fn,
+ &state, root);
+ if (status != DLADM_STATUS_OK)
+ return (status);
- if (!state.rs_found) {
- errno = ENOENT;
- return (-1);
- }
+ if (!state.rs_found)
+ return (DLADM_STATUS_NOTFOUND);
- return (0);
+ return (DLADM_STATUS_OK);
}
/*
@@ -1149,7 +1176,7 @@ i_laadm_remove_db(laadm_grp_attr_db_t *attr, const char *root,
* success, or B_FALSE if an error occured during parsing.
*/
boolean_t
-laadm_str_to_policy(const char *str, uint32_t *policy)
+dladm_aggr_str2policy(const char *str, uint32_t *policy)
{
int i;
policy_t *pol;
@@ -1180,7 +1207,7 @@ laadm_str_to_policy(const char *str, uint32_t *policy)
* free the returned string after use.
*/
char *
-laadm_policy_to_str(uint32_t policy, char *str)
+dladm_aggr_policy2str(uint32_t policy, char *str)
{
int i, npolicies = 0;
policy_t *pol;
@@ -1207,7 +1234,7 @@ laadm_policy_to_str(uint32_t policy, char *str)
* Return B_FALSE if a syntax error was encountered, B_FALSE otherwise.
*/
boolean_t
-laadm_str_to_mac_addr(const char *str, boolean_t *mac_fixed, uchar_t *mac_addr)
+dladm_aggr_str2macaddr(const char *str, boolean_t *mac_fixed, uchar_t *mac_addr)
{
uchar_t *conv_str;
int mac_len;
@@ -1243,7 +1270,7 @@ laadm_str_to_mac_addr(const char *str, boolean_t *mac_fixed, uchar_t *mac_addr)
* Returns a string containing a printable representation of a MAC address.
*/
const char *
-laadm_mac_addr_to_str(unsigned char *mac, char *buf)
+dladm_aggr_macaddr2str(unsigned char *mac, char *buf)
{
static char unknown_mac[] = {0, 0, 0, 0, 0, 0};
@@ -1261,10 +1288,10 @@ laadm_mac_addr_to_str(unsigned char *mac, char *buf)
* B_TRUE if a match was found, B_FALSE otherwise.
*/
boolean_t
-laadm_str_to_lacp_mode(const char *str, aggr_lacp_mode_t *lacp_mode)
+dladm_aggr_str2lacpmode(const char *str, aggr_lacp_mode_t *lacp_mode)
{
int i;
- laadm_lacp_mode_t *mode;
+ dladm_aggr_lacpmode_t *mode;
for (i = 0; i < NLACP_MODES; i++) {
mode = &lacp_modes[i];
@@ -1283,18 +1310,22 @@ laadm_str_to_lacp_mode(const char *str, aggr_lacp_mode_t *lacp_mode)
* LACP mode number is invalid.
*/
const char *
-laadm_lacp_mode_to_str(aggr_lacp_mode_t mode_id)
+dladm_aggr_lacpmode2str(aggr_lacp_mode_t mode_id, char *buf)
{
int i;
- laadm_lacp_mode_t *mode;
+ dladm_aggr_lacpmode_t *mode;
for (i = 0; i < NLACP_MODES; i++) {
mode = &lacp_modes[i];
- if (mode->mode_id == mode_id)
- return (mode->mode_str);
+ if (mode->mode_id == mode_id) {
+ (void) snprintf(buf, DLADM_STRSIZE, "%s",
+ mode->mode_str);
+ return (buf);
+ }
}
- return (NULL);
+ (void) strlcpy(buf, "unknown", DLADM_STRSIZE);
+ return (buf);
}
/*
@@ -1302,10 +1333,10 @@ laadm_lacp_mode_to_str(aggr_lacp_mode_t mode_id)
* B_TRUE if a match was found, B_FALSE otherwise.
*/
boolean_t
-laadm_str_to_lacp_timer(const char *str, aggr_lacp_timer_t *lacp_timer)
+dladm_aggr_str2lacptimer(const char *str, aggr_lacp_timer_t *lacp_timer)
{
int i;
- laadm_lacp_timer_t *timer;
+ dladm_aggr_lacptimer_t *timer;
for (i = 0; i < NLACP_TIMERS; i++) {
timer = &lacp_timers[i];
@@ -1324,18 +1355,41 @@ laadm_str_to_lacp_timer(const char *str, aggr_lacp_timer_t *lacp_timer)
* LACP timer number is invalid.
*/
const char *
-laadm_lacp_timer_to_str(aggr_lacp_timer_t timer_id)
+dladm_aggr_lacptimer2str(aggr_lacp_timer_t timer_id, char *buf)
{
int i;
- laadm_lacp_timer_t *timer;
+ dladm_aggr_lacptimer_t *timer;
for (i = 0; i < NLACP_TIMERS; i++) {
timer = &lacp_timers[i];
- if (timer->lt_id == timer_id)
- return (timer->lt_str);
+ if (timer->lt_id == timer_id) {
+ (void) snprintf(buf, DLADM_STRSIZE, "%s",
+ timer->lt_str);
+ return (buf);
+ }
+ }
+
+ (void) strlcpy(buf, "unknown", DLADM_STRSIZE);
+ return (buf);
+}
+
+const char *
+dladm_aggr_portstate2str(aggr_port_state_t state_id, char *buf)
+{
+ int i;
+ dladm_aggr_port_state_t *state;
+
+ for (i = 0; i < NPORT_STATES; i++) {
+ state = &port_states[i];
+ if (state->state_id == state_id) {
+ (void) snprintf(buf, DLADM_STRSIZE, "%s",
+ state->state_str);
+ return (buf);
+ }
}
- return (NULL);
+ (void) strlcpy(buf, "unknown", DLADM_STRSIZE);
+ return (buf);
}
#define FPRINTF_ERR(fcall) if ((fcall) < 0) return (-1);
@@ -1345,15 +1399,15 @@ laadm_lacp_timer_to_str(aggr_lacp_timer_t timer_id)
* success, -1 on failure.
*/
static int
-i_laadm_fput_grp(FILE *fp, laadm_grp_attr_db_t *attr)
+i_dladm_aggr_fput_grp(FILE *fp, dladm_aggr_grp_attr_db_t *attr)
{
int i;
char addr_str[ETHERADDRL * 3];
- char policy_str[LAADM_POLICY_STR_LEN];
+ char buf[DLADM_STRSIZE];
/* key, policy */
FPRINTF_ERR(fprintf(fp, "%d\t%s\t", attr->lt_key,
- laadm_policy_to_str(attr->lt_policy, policy_str)));
+ dladm_aggr_policy2str(attr->lt_policy, buf)));
/* number of ports, ports */
FPRINTF_ERR(fprintf(fp, "%d\t", attr->lt_nports));
@@ -1369,47 +1423,47 @@ i_laadm_fput_grp(FILE *fp, laadm_grp_attr_db_t *attr)
FPRINTF_ERR(fprintf(fp, "auto"));
} else {
FPRINTF_ERR(fprintf(fp, "%s",
- laadm_mac_addr_to_str(attr->lt_mac, addr_str)));
+ dladm_aggr_macaddr2str(attr->lt_mac, addr_str)));
}
FPRINTF_ERR(fprintf(fp, "\t"));
FPRINTF_ERR(fprintf(fp, "%s\t",
- laadm_lacp_mode_to_str(attr->lt_lacp_mode)));
+ dladm_aggr_lacpmode2str(attr->lt_lacp_mode, buf)));
FPRINTF_ERR(fprintf(fp, "%s\n",
- laadm_lacp_timer_to_str(attr->lt_lacp_timer)));
+ dladm_aggr_lacptimer2str(attr->lt_lacp_timer, buf)));
return (0);
}
-static int
-i_laadm_create_db(laadm_grp_attr_db_t *attr, const char *root,
- laadm_diag_t *diag)
+static dladm_status_t
+i_dladm_aggr_create_db(dladm_aggr_grp_attr_db_t *attr, const char *root)
{
- FILE *fp;
- char line[MAXLINELEN];
- uint32_t key;
- int lock_fd, retval = -1;
+ FILE *fp;
+ char line[MAXLINELEN];
+ uint32_t key;
+ int lock_fd;
char *db_file;
char db_file_buf[MAXPATHLEN];
char *endp = NULL;
+ dladm_status_t status;
if (root == NULL) {
- db_file = LAADM_DB;
+ db_file = DLADM_AGGR_DB;
} else {
(void) snprintf(db_file_buf, MAXPATHLEN, "%s%s", root,
- LAADM_DB);
+ DLADM_AGGR_DB);
db_file = db_file_buf;
}
- if ((lock_fd = i_laadm_lock_db(F_WRLCK)) < 0)
- return (-1);
+ if ((lock_fd = i_dladm_aggr_lock_db(F_WRLCK)) < 0)
+ return (dladm_errno2status(errno));
if ((fp = fopen(db_file, "r+")) == NULL &&
(fp = fopen(db_file, "w")) == NULL) {
- i_laadm_unlock_db(lock_fd);
- *diag = LAADM_DIAG_REPOSITORY_OPENFAIL;
- return (-1);
+ status = dladm_errno2status(errno);
+ i_dladm_aggr_unlock_db(lock_fd);
+ return (status);
}
/* look for existing group with same key */
@@ -1429,13 +1483,14 @@ i_laadm_create_db(laadm_grp_attr_db_t *attr, const char *root,
errno = 0;
key = (int)strtol(holder, &endp, 10);
if (errno != 0 || *endp != '\0') {
- goto failed;
+ status = DLADM_STATUS_REPOSITORYINVAL;
+ goto done;
}
if (key == attr->lt_key) {
/* group with key already exists */
- errno = EEXIST;
- goto failed;
+ status = DLADM_STATUS_EXIST;
+ goto done;
}
}
@@ -1444,35 +1499,34 @@ i_laadm_create_db(laadm_grp_attr_db_t *attr, const char *root,
* the same key already exists. It's now time to add the
* new group to the DB.
*/
- if (i_laadm_fput_grp(fp, attr) != 0)
- goto failed;
+ if (i_dladm_aggr_fput_grp(fp, attr) != 0) {
+ status = dladm_errno2status(errno);
+ goto done;
+ }
- retval = 0;
+ status = DLADM_STATUS_OK;
-failed:
+done:
(void) fclose(fp);
- i_laadm_unlock_db(lock_fd);
- return (retval);
+ i_dladm_aggr_unlock_db(lock_fd);
+ return (status);
}
/*
* Create a new link aggregation group. Update the configuration
* file and bring it up.
*/
-int
-laadm_create(uint32_t key, uint32_t nports, laadm_port_attr_db_t *ports,
- uint32_t policy, boolean_t mac_addr_fixed, uchar_t *mac_addr,
- aggr_lacp_mode_t lacp_mode, aggr_lacp_timer_t lacp_timer, boolean_t tempop,
- const char *root, laadm_diag_t *diag)
+dladm_status_t
+dladm_aggr_create(uint32_t key, uint32_t nports,
+ dladm_aggr_port_attr_db_t *ports, uint32_t policy, boolean_t mac_addr_fixed,
+ uchar_t *mac_addr, aggr_lacp_mode_t lacp_mode, aggr_lacp_timer_t lacp_timer,
+ boolean_t tempop, const char *root)
{
- laadm_grp_attr_db_t attr;
- int errno_sav;
+ dladm_aggr_grp_attr_db_t attr;
+ dladm_status_t status;
- if (key == 0 || key > LAADM_MAX_KEY) {
- errno = EINVAL;
- *diag = LAADM_DIAG_INVALID_KEY;
- return (-1);
- }
+ if (key == 0 || key > DLADM_AGGR_MAX_KEY)
+ return (DLADM_STATUS_KEYINVAL);
attr.lt_key = key;
attr.lt_nports = nports;
@@ -1488,220 +1542,184 @@ laadm_create(uint32_t key, uint32_t nports, laadm_port_attr_db_t *ports,
/* add the link aggregation group to the DB */
if (!tempop) {
- if (i_laadm_create_db(&attr, root, diag) < 0)
- return (-1);
+ status = i_dladm_aggr_create_db(&attr, root);
+ if (status != DLADM_STATUS_OK)
+ return (status);
} else {
- laadm_up_t up;
- int rc;
+ dladm_aggr_up_t up;
up.lu_key = key;
up.lu_found = B_FALSE;
- up.lu_fd = open(LAADM_DEV, O_RDWR);
+ up.lu_fd = open(DLADM_AGGR_DEV, O_RDWR);
if (up.lu_fd < 0)
- return (-1);
+ return (dladm_errno2status(errno));
- rc = i_laadm_up((void *)&up, &attr, diag);
+ status = i_dladm_aggr_up((void *)&up, &attr);
(void) close(up.lu_fd);
- return (rc);
+ return (status);
}
/* bring up the link aggregation group */
- if (laadm_up(key, root, diag) < 0) {
- if (errno != EEXIST) {
- errno_sav = errno;
- if (!tempop) {
- (void) i_laadm_delete_db(&attr, root,
- diag);
- }
- errno = errno_sav;
- }
- return (-1);
- }
+ status = dladm_aggr_up(key, root);
+ /*
+ * If the operation fails because the aggregation already exists,
+ * then only update the persistent configuration repository and
+ * return success.
+ */
+ if (status == DLADM_STATUS_EXIST)
+ status = DLADM_STATUS_OK;
- return (0);
+ if (status != DLADM_STATUS_OK && !tempop)
+ (void) i_dladm_aggr_del_db(&attr, root);
+
+ return (status);
}
/*
* Modify the parameters of an existing link aggregation group. Update
* the configuration file and pass the changes to the kernel.
*/
-int
-laadm_modify(uint32_t key, uint32_t modify_mask, uint32_t policy,
+dladm_status_t
+dladm_aggr_modify(uint32_t key, uint32_t modify_mask, uint32_t policy,
boolean_t mac_fixed, uchar_t *mac_addr, aggr_lacp_mode_t lacp_mode,
- aggr_lacp_timer_t lacp_timer, boolean_t tempop, const char *root,
- laadm_diag_t *diag)
+ aggr_lacp_timer_t lacp_timer, boolean_t tempop, const char *root)
{
- laadm_modify_attr_t new_attr, old_attr;
- int errno_save;
+ dladm_aggr_modify_attr_t new_attr, old_attr;
+ dladm_status_t status;
- if (key == 0) {
- errno = EINVAL;
- *diag = LAADM_DIAG_INVALID_KEY;
- return (-1);
- }
+ if (key == 0)
+ return (DLADM_STATUS_KEYINVAL);
- if (modify_mask & LAADM_MODIFY_POLICY)
+ if (modify_mask & DLADM_AGGR_MODIFY_POLICY)
new_attr.ld_policy = policy;
- if (modify_mask & LAADM_MODIFY_MAC) {
+ if (modify_mask & DLADM_AGGR_MODIFY_MAC) {
new_attr.ld_mac_fixed = mac_fixed;
bcopy(mac_addr, new_attr.ld_mac, ETHERADDRL);
}
- if (modify_mask & LAADM_MODIFY_LACP_MODE)
+ if (modify_mask & DLADM_AGGR_MODIFY_LACP_MODE)
new_attr.ld_lacp_mode = lacp_mode;
- if (modify_mask & LAADM_MODIFY_LACP_TIMER)
+ if (modify_mask & DLADM_AGGR_MODIFY_LACP_TIMER)
new_attr.ld_lacp_timer = lacp_timer;
/* update the DB */
- if (!tempop) {
- if (i_laadm_modify_db(key, modify_mask, &new_attr,
- &old_attr, root, diag) < 0)
- return (-1);
+ if (!tempop && ((status = i_dladm_aggr_modify_db(key, modify_mask,
+ &new_attr, &old_attr, root)) != DLADM_STATUS_OK)) {
+ return (status);
}
- if (i_laadm_modify_sys(key, modify_mask, &new_attr,
- diag) < 0) {
- if (!tempop) {
- errno_save = errno;
- (void) i_laadm_modify_db(key, modify_mask,
- &old_attr, NULL, root, diag);
- errno = errno_save;
- }
- return (-1);
+ status = i_dladm_aggr_modify_sys(key, modify_mask, &new_attr);
+ if (status != DLADM_STATUS_OK && !tempop) {
+ (void) i_dladm_aggr_modify_db(key, modify_mask, &old_attr,
+ NULL, root);
}
- return (0);
+ return (status);
}
/*
* Delete a previously created link aggregation group.
*/
-int
-laadm_delete(uint32_t key, boolean_t tempop, const char *root,
- laadm_diag_t *diag)
+dladm_status_t
+dladm_aggr_delete(uint32_t key, boolean_t tempop, const char *root)
{
- laadm_grp_attr_db_t db_attr;
+ dladm_aggr_grp_attr_db_t db_attr;
+ dladm_status_t status;
- if (key == 0) {
- errno = EINVAL;
- *diag = LAADM_DIAG_INVALID_KEY;
- return (-1);
- }
+ if (key == 0)
+ return (DLADM_STATUS_KEYINVAL);
if (tempop) {
- laadm_down_t down;
- laadm_grp_attr_sys_t sys_attr;
+ dladm_aggr_down_t down;
+ dladm_aggr_grp_attr_t sys_attr;
down.ld_key = key;
down.ld_found = B_FALSE;
sys_attr.lg_key = key;
- return (i_laadm_down((void *)&down, &sys_attr));
- } else if ((laadm_down(key) < 0) && errno == EBUSY) {
- return (-1);
- }
+ if (i_dladm_aggr_down((void *)&down, &sys_attr) < 0)
+ return (dladm_errno2status(errno));
+ else
+ return (DLADM_STATUS_OK);
+ } else {
+ status = dladm_aggr_down(key);
- db_attr.lt_key = key;
+ /*
+ * Only continue to delete the configuration repository
+ * either if we successfully delete the active aggregation
+ * or if the aggregation is not found.
+ */
+ if (status != DLADM_STATUS_OK &&
+ status != DLADM_STATUS_NOTFOUND) {
+ return (status);
+ }
+ }
if (tempop)
- return (0);
+ return (DLADM_STATUS_OK);
- return (i_laadm_delete_db(&db_attr, root, diag));
+ db_attr.lt_key = key;
+ return (i_dladm_aggr_del_db(&db_attr, root));
}
/*
* Add one or more ports to an existing link aggregation.
*/
-int
-laadm_add(uint32_t key, uint32_t nports, laadm_port_attr_db_t *ports,
- boolean_t tempop, const char *root, laadm_diag_t *diag)
+dladm_status_t
+dladm_aggr_add(uint32_t key, uint32_t nports, dladm_aggr_port_attr_db_t *ports,
+ boolean_t tempop, const char *root)
{
- laadm_grp_attr_db_t attr;
- int errno_save;
+ dladm_aggr_grp_attr_db_t attr;
+ dladm_status_t status;
- if (key == 0) {
- errno = EINVAL;
- *diag = LAADM_DIAG_INVALID_KEY;
- return (-1);
- }
+ if (key == 0)
+ return (DLADM_STATUS_KEYINVAL);
bzero(&attr, sizeof (attr));
attr.lt_key = key;
attr.lt_nports = nports;
attr.lt_ports = ports;
- if (!tempop) {
- if (i_laadm_add_db(&attr, root, diag) < 0)
- return (-1);
+ if (!tempop &&
+ ((status = i_dladm_aggr_add_db(&attr, root)) != DLADM_STATUS_OK)) {
+ return (status);
}
- if (i_laadm_add_rem_sys(&attr, LAIOC_ADD, diag) < 0) {
- if (!tempop) {
- errno_save = errno;
- (void) i_laadm_remove_db(&attr, root, diag);
- errno = errno_save;
- }
- return (-1);
- }
+ status = i_dladm_aggr_add_rem_sys(&attr, LAIOC_ADD);
+ if (status != DLADM_STATUS_OK && !tempop)
+ (void) i_dladm_aggr_remove_db(&attr, root);
- return (0);
+ return (status);
}
/*
* Remove one or more ports from an existing link aggregation.
*/
-int
-laadm_remove(uint32_t key, uint32_t nports, laadm_port_attr_db_t *ports,
- boolean_t tempop, const char *root, laadm_diag_t *diag)
+dladm_status_t
+dladm_aggr_remove(uint32_t key, uint32_t nports,
+ dladm_aggr_port_attr_db_t *ports, boolean_t tempop, const char *root)
{
- laadm_grp_attr_db_t attr;
- int errno_save;
+ dladm_aggr_grp_attr_db_t attr;
+ dladm_status_t status;
- if (key == 0) {
- errno = EINVAL;
- *diag = LAADM_DIAG_INVALID_KEY;
- return (-1);
- }
+ if (key == 0)
+ return (DLADM_STATUS_KEYINVAL);
bzero(&attr, sizeof (attr));
attr.lt_key = key;
attr.lt_nports = nports;
attr.lt_ports = ports;
- if (!tempop) {
- if (i_laadm_remove_db(&attr, root, diag) < 0)
- return (-1);
- }
-
- if (i_laadm_add_rem_sys(&attr, LAIOC_REMOVE, diag) < 0) {
- if (!tempop) {
- errno_save = errno;
- (void) i_laadm_add_db(&attr, root, diag);
- errno = errno_save;
- }
- return (-1);
+ if (!tempop &&
+ ((status = i_dladm_aggr_remove_db(&attr, root)) !=
+ DLADM_STATUS_OK)) {
+ return (status);
}
- return (0);
-}
+ status = i_dladm_aggr_add_rem_sys(&attr, LAIOC_REMOVE);
+ if (status != DLADM_STATUS_OK && !tempop)
+ (void) i_dladm_aggr_add_db(&attr, root);
-const char *
-laadm_diag(laadm_diag_t diag) {
- switch (diag) {
- case LAADM_DIAG_REPOSITORY_OPENFAIL:
- return (gettext("configuration repository open failed"));
- case LAADM_DIAG_REPOSITORY_PARSEFAIL:
- return (gettext("parsing of configuration repository failed"));
- case LAADM_DIAG_REPOSITORY_CLOSEFAIL:
- return (gettext("configuration repository close failed"));
- case LAADM_DIAG_INVALID_INTFNAME:
- return (gettext("invalid interface name"));
- case LAADM_DIAG_INVALID_MACADDR:
- return (gettext("invalid MAC address"));
- case LAADM_DIAG_INVALID_KEY:
- return (gettext("invalid key"));
- default:
- return (gettext("unknown diagnostic"));
- }
+ return (status);
}
diff --git a/usr/src/lib/libdladm/common/libdlaggr.h b/usr/src/lib/libdladm/common/libdlaggr.h
new file mode 100644
index 0000000000..40b8c72eeb
--- /dev/null
+++ b/usr/src/lib/libdladm/common/libdlaggr.h
@@ -0,0 +1,113 @@
+/*
+ * 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 2007 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _LIBDLAGGR_H
+#define _LIBDLAGGR_H
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+/*
+ * This file includes structures, macros and routines used by aggregation link
+ * administration.
+ */
+
+#include <sys/types.h>
+#include <sys/aggr.h>
+#include <libdladm.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Modification flags sent with the LAIOC_MODIFY ioctl
+ */
+#define DLADM_AGGR_MODIFY_POLICY 0x01
+#define DLADM_AGGR_MODIFY_MAC 0x02
+#define DLADM_AGGR_MODIFY_LACP_MODE 0x04
+#define DLADM_AGGR_MODIFY_LACP_TIMER 0x08
+
+typedef struct dladm_aggr_port_attr_db {
+ char lp_devname[MAXNAMELEN + 1];
+} dladm_aggr_port_attr_db_t;
+
+typedef struct dladm_aggr_port_attr {
+ char lp_devname[MAXNAMELEN + 1];
+ uchar_t lp_mac[ETHERADDRL];
+ aggr_port_state_t lp_state;
+ aggr_lacp_state_t lp_lacp_state;
+} dladm_aggr_port_attr_t;
+
+typedef struct dladm_aggr_grp_attr {
+ uint32_t lg_key;
+ uint32_t lg_nports;
+ dladm_aggr_port_attr_t *lg_ports;
+ uint32_t lg_policy;
+ uchar_t lg_mac[ETHERADDRL];
+ boolean_t lg_mac_fixed;
+ aggr_lacp_mode_t lg_lacp_mode;
+ aggr_lacp_timer_t lg_lacp_timer;
+} dladm_aggr_grp_attr_t;
+
+extern dladm_status_t dladm_aggr_create(uint32_t, uint32_t,
+ dladm_aggr_port_attr_db_t *, uint32_t, boolean_t,
+ uchar_t *, aggr_lacp_mode_t, aggr_lacp_timer_t,
+ boolean_t, const char *);
+extern dladm_status_t dladm_aggr_delete(uint32_t, boolean_t, const char *);
+extern dladm_status_t dladm_aggr_add(uint32_t, uint32_t,
+ dladm_aggr_port_attr_db_t *, boolean_t,
+ const char *);
+extern dladm_status_t dladm_aggr_remove(uint32_t, uint32_t,
+ dladm_aggr_port_attr_db_t *, boolean_t,
+ const char *);
+extern dladm_status_t dladm_aggr_modify(uint32_t, uint32_t, uint32_t,
+ boolean_t, uchar_t *, aggr_lacp_mode_t,
+ aggr_lacp_timer_t, boolean_t, const char *);
+extern dladm_status_t dladm_aggr_up(uint32_t, const char *);
+extern dladm_status_t dladm_aggr_down(uint32_t);
+
+extern boolean_t dladm_aggr_str2policy(const char *, uint32_t *);
+extern char *dladm_aggr_policy2str(uint32_t, char *);
+extern boolean_t dladm_aggr_str2macaddr(const char *, boolean_t *,
+ uchar_t *);
+extern const char *dladm_aggr_macaddr2str(unsigned char *, char *);
+
+extern boolean_t dladm_aggr_str2lacpmode(const char *,
+ aggr_lacp_mode_t *);
+extern const char *dladm_aggr_lacpmode2str(aggr_lacp_mode_t, char *);
+extern boolean_t dladm_aggr_str2lacptimer(const char *,
+ aggr_lacp_timer_t *);
+extern const char *dladm_aggr_lacptimer2str(aggr_lacp_timer_t, char *);
+
+extern const char *dladm_aggr_portstate2str(aggr_port_state_t, char *);
+
+extern int dladm_aggr_walk(int (*)(void *,
+ dladm_aggr_grp_attr_t *), void *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LIBDLAGGR_H */
diff --git a/usr/src/lib/libdladm/common/libdllink.c b/usr/src/lib/libdladm/common/libdllink.c
new file mode 100644
index 0000000000..45f4641588
--- /dev/null
+++ b/usr/src/lib/libdladm/common/libdllink.c
@@ -0,0 +1,391 @@
+/*
+ * 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 2007 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+#include <sys/types.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <strings.h>
+#include <sys/stat.h>
+#include <sys/dld.h>
+#include <libdlpi.h>
+#include <libdevinfo.h>
+#include <libdllink.h>
+#include <libdladm_impl.h>
+
+typedef struct dladm_dev {
+ char dd_name[IFNAMSIZ];
+ struct dladm_dev *dd_next;
+} dladm_dev_t;
+
+typedef struct dladm_walk {
+ dladm_dev_t *dw_dev_list;
+} dladm_walk_t;
+
+/*
+ * Return the attributes of the specified datalink from the DLD driver.
+ */
+static int
+i_dladm_info(int fd, const char *name, dladm_attr_t *dap)
+{
+ dld_ioc_attr_t dia;
+
+ if (strlen(name) >= IFNAMSIZ) {
+ errno = EINVAL;
+ return (-1);
+ }
+
+ (void) strlcpy(dia.dia_name, name, IFNAMSIZ);
+
+ if (i_dladm_ioctl(fd, DLDIOCATTR, &dia, sizeof (dia)) < 0)
+ return (-1);
+
+ (void) strlcpy(dap->da_dev, dia.dia_dev, MAXNAMELEN);
+ dap->da_max_sdu = dia.dia_max_sdu;
+ dap->da_vid = dia.dia_vid;
+
+ return (0);
+}
+
+/*
+ * Adds a datalink to the array corresponding to arg.
+ */
+static void
+i_dladm_nt_net_add(void *arg, char *name)
+{
+ dladm_walk_t *dwp = arg;
+ dladm_dev_t *ddp = dwp->dw_dev_list;
+ dladm_dev_t **lastp = &dwp->dw_dev_list;
+
+ while (ddp) {
+ /*
+ * Skip duplicates.
+ */
+ if (strcmp(ddp->dd_name, name) == 0)
+ return;
+
+ lastp = &ddp->dd_next;
+ ddp = ddp->dd_next;
+ }
+
+ if ((ddp = malloc(sizeof (*ddp))) == NULL)
+ return;
+
+ (void) strlcpy(ddp->dd_name, name, IFNAMSIZ);
+ ddp->dd_next = NULL;
+ *lastp = ddp;
+}
+
+/*
+ * Walker callback invoked for each DDI_NT_NET node.
+ */
+static int
+i_dladm_nt_net_walk(di_node_t node, di_minor_t minor, void *arg)
+{
+ char linkname[DLPI_LINKNAME_MAX];
+ dlpi_handle_t dh;
+
+ if (dlpi_makelink(linkname, di_minor_name(minor),
+ di_instance(node)) != DLPI_SUCCESS)
+ return (DI_WALK_CONTINUE);
+
+ if (dlpi_open(linkname, &dh, 0) == DLPI_SUCCESS) {
+ i_dladm_nt_net_add(arg, linkname);
+ dlpi_close(dh);
+ }
+ return (DI_WALK_CONTINUE);
+}
+
+/*
+ * Hold a data-link.
+ */
+static int
+i_dladm_hold_link(const char *name, zoneid_t zoneid, boolean_t docheck)
+{
+ int fd;
+ dld_hold_vlan_t dhv;
+
+ if (strlen(name) >= IFNAMSIZ) {
+ errno = EINVAL;
+ return (-1);
+ }
+
+ if ((fd = open(DLD_CONTROL_DEV, O_RDWR)) < 0)
+ return (-1);
+
+ bzero(&dhv, sizeof (dld_hold_vlan_t));
+ (void) strlcpy(dhv.dhv_name, name, IFNAMSIZ);
+ dhv.dhv_zid = zoneid;
+ dhv.dhv_docheck = docheck;
+
+ if (i_dladm_ioctl(fd, DLDIOCHOLDVLAN, &dhv, sizeof (dhv)) < 0) {
+ int olderrno = errno;
+
+ (void) close(fd);
+ errno = olderrno;
+ return (-1);
+ }
+
+ (void) close(fd);
+ return (0);
+}
+
+/*
+ * Release a data-link.
+ */
+static int
+i_dladm_rele_link(const char *name, zoneid_t zoneid, boolean_t docheck)
+{
+ int fd;
+ dld_hold_vlan_t dhv;
+
+ if (strlen(name) >= IFNAMSIZ) {
+ errno = EINVAL;
+ return (-1);
+ }
+
+ if ((fd = open(DLD_CONTROL_DEV, O_RDWR)) < 0)
+ return (-1);
+
+ bzero(&dhv, sizeof (dld_hold_vlan_t));
+ (void) strlcpy(dhv.dhv_name, name, IFNAMSIZ);
+ dhv.dhv_zid = zoneid;
+ dhv.dhv_docheck = docheck;
+
+ if (i_dladm_ioctl(fd, DLDIOCRELEVLAN, &dhv, sizeof (dhv)) < 0) {
+ int olderrno = errno;
+
+ (void) close(fd);
+ errno = olderrno;
+ return (-1);
+ }
+
+ (void) close(fd);
+ return (0);
+}
+
+/*
+ * Invoke the specified callback function for each active DDI_NT_NET
+ * node.
+ */
+int
+dladm_walk(void (*fn)(void *, const char *), void *arg)
+{
+ di_node_t root;
+ dladm_walk_t dw;
+ dladm_dev_t *ddp, *last_ddp;
+
+ if ((root = di_init("/", DINFOCACHE)) == DI_NODE_NIL) {
+ errno = EFAULT;
+ return (-1);
+ }
+ dw.dw_dev_list = NULL;
+
+ (void) di_walk_minor(root, DDI_NT_NET, DI_CHECK_ALIAS, &dw,
+ i_dladm_nt_net_walk);
+
+ di_fini(root);
+
+ ddp = dw.dw_dev_list;
+ while (ddp) {
+ fn(arg, ddp->dd_name);
+ last_ddp = ddp;
+ ddp = ddp->dd_next;
+ free(last_ddp);
+ }
+
+ return (0);
+}
+
+/*
+ * MAC Administration Library.
+ *
+ * This library is used by administration tools such as dladm(1M) to
+ * iterate through the list of MAC interfaces
+ *
+ */
+
+typedef struct dladm_mac_dev {
+ char dm_name[MAXNAMELEN];
+ struct dladm_mac_dev *dm_next;
+} dladm_mac_dev_t;
+
+typedef struct macadm_walk {
+ dladm_mac_dev_t *dmd_dev_list;
+} dladm_mac_walk_t;
+
+/*
+ * Local callback invoked for each DDI_NT_NET node.
+ */
+/* ARGSUSED */
+static int
+i_dladm_mac_walk(di_node_t node, di_minor_t minor, void *arg)
+{
+ dladm_mac_walk_t *dmwp = arg;
+ dladm_mac_dev_t *dmdp = dmwp->dmd_dev_list;
+ dladm_mac_dev_t **last_dmdp = &dmwp->dmd_dev_list;
+ char mac[MAXNAMELEN];
+
+ (void) snprintf(mac, MAXNAMELEN, "%s%d",
+ di_driver_name(node), di_instance(node));
+
+ /*
+ * Skip aggregations.
+ */
+ if (strcmp("aggr", di_driver_name(node)) == 0)
+ return (DI_WALK_CONTINUE);
+
+ while (dmdp) {
+ /*
+ * Skip duplicates.
+ */
+ if (strcmp(dmdp->dm_name, mac) == 0)
+ return (DI_WALK_CONTINUE);
+
+ last_dmdp = &dmdp->dm_next;
+ dmdp = dmdp->dm_next;
+ }
+
+ if ((dmdp = malloc(sizeof (*dmdp))) == NULL)
+ return (DI_WALK_CONTINUE);
+
+ (void) strlcpy(dmdp->dm_name, mac, MAXNAMELEN);
+ dmdp->dm_next = NULL;
+ *last_dmdp = dmdp;
+
+ return (DI_WALK_CONTINUE);
+}
+
+/*
+ * Invoke the specified callback for each DDI_NT_MAC node.
+ */
+int
+dladm_mac_walk(void (*fn)(void *, const char *), void *arg)
+{
+ di_node_t root;
+ dladm_mac_walk_t dmw;
+ dladm_mac_dev_t *dmdp, *next;
+
+ if ((root = di_init("/", DINFOCACHE)) == DI_NODE_NIL)
+ return (-1);
+
+ dmw.dmd_dev_list = NULL;
+
+ (void) di_walk_minor(root, DDI_NT_NET, DI_CHECK_ALIAS, &dmw,
+ i_dladm_mac_walk);
+
+ di_fini(root);
+
+ dmdp = dmw.dmd_dev_list;
+ for (dmdp = dmw.dmd_dev_list; dmdp != NULL; dmdp = next) {
+ next = dmdp->dm_next;
+ (*fn)(arg, dmdp->dm_name);
+ free(dmdp);
+ }
+
+ return (0);
+}
+
+/*
+ * Returns the current attributes of the specified datalink.
+ */
+int
+dladm_info(const char *name, dladm_attr_t *dap)
+{
+ int fd;
+
+ if ((fd = open(DLD_CONTROL_DEV, O_RDWR)) < 0)
+ return (-1);
+
+ if (i_dladm_info(fd, name, dap) < 0)
+ goto failed;
+
+ (void) close(fd);
+ return (0);
+
+failed:
+ (void) close(fd);
+ return (-1);
+}
+
+const char *
+dladm_linkstate2str(link_state_t state, char *buf)
+{
+ const char *s;
+
+ switch (state) {
+ case LINK_STATE_UP:
+ s = "up";
+ break;
+ case LINK_STATE_DOWN:
+ s = "down";
+ break;
+ default:
+ s = "unknown";
+ break;
+ }
+ (void) snprintf(buf, DLADM_STRSIZE, "%s", s);
+ return (buf);
+}
+
+const char *
+dladm_linkduplex2str(link_duplex_t duplex, char *buf)
+{
+ const char *s;
+
+ switch (duplex) {
+ case LINK_DUPLEX_FULL:
+ s = "full";
+ break;
+ case LINK_DUPLEX_HALF:
+ s = "half";
+ break;
+ default:
+ s = "unknown";
+ break;
+ }
+ (void) snprintf(buf, DLADM_STRSIZE, "%s", s);
+ return (buf);
+}
+
+/*
+ * Do a "hold" operation to a link.
+ */
+int
+dladm_hold_link(const char *name, zoneid_t zoneid, boolean_t docheck)
+{
+ return (i_dladm_hold_link(name, zoneid, docheck));
+}
+
+/*
+ * Do a "release" operation to a link.
+ */
+int
+dladm_rele_link(const char *name, zoneid_t zoneid, boolean_t docheck)
+{
+ return (i_dladm_rele_link(name, zoneid, docheck));
+}
diff --git a/usr/src/lib/libdladm/common/libdllink.h b/usr/src/lib/libdladm/common/libdllink.h
new file mode 100644
index 0000000000..2f5bfd145f
--- /dev/null
+++ b/usr/src/lib/libdladm/common/libdllink.h
@@ -0,0 +1,104 @@
+/*
+ * 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 2007 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _LIBDLLINK_H
+#define _LIBDLLINK_H
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+/*
+ * This file includes strcutures, macros and routines used by general
+ * link administration, which applies not limited to one specific
+ * type of link.
+ */
+
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/mac.h>
+#include <libdladm.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct dladm_attr {
+ char da_dev[MAXNAMELEN];
+ uint_t da_max_sdu;
+ uint16_t da_vid;
+} dladm_attr_t;
+
+/*
+ * Maximum size of secobj value. Note that it should not be greater than
+ * DLD_SECOBJ_VAL_MAX.
+ */
+#define DLADM_SECOBJ_VAL_MAX 256
+
+/*
+ * Maximum size of secobj name. Note that it should not be greater than
+ * DLD_SECOBJ_NAME_MAX.
+ */
+#define DLADM_SECOBJ_NAME_MAX 32
+
+#define DLADM_PROP_VAL_MAX 25
+
+#define DLADM_SECOBJ_CLASS_WEP 0
+typedef int dladm_secobj_class_t;
+
+typedef void (dladm_walkcb_t)(void *, const char *);
+
+extern int dladm_walk(dladm_walkcb_t *, void *);
+extern int dladm_mac_walk(void (*fn)(void *, const char *), void *);
+extern int dladm_info(const char *, dladm_attr_t *);
+extern int dladm_hold_link(const char *, zoneid_t, boolean_t);
+extern int dladm_rele_link(const char *, zoneid_t, boolean_t);
+
+extern dladm_status_t dladm_set_prop(const char *, const char *,
+ char **, uint_t, uint_t, char **);
+extern dladm_status_t dladm_get_prop(const char *, dladm_prop_type_t,
+ const char *, char **, uint_t *);
+extern dladm_status_t dladm_walk_prop(const char *, void *,
+ boolean_t (*)(void *, const char *));
+extern dladm_status_t dladm_set_secobj(const char *, dladm_secobj_class_t,
+ uint8_t *, uint_t, uint_t);
+extern dladm_status_t dladm_get_secobj(const char *, dladm_secobj_class_t *,
+ uint8_t *, uint_t *, uint_t);
+extern dladm_status_t dladm_unset_secobj(const char *, uint_t);
+extern dladm_status_t dladm_walk_secobj(void *,
+ boolean_t (*)(void *, const char *), uint_t);
+
+extern const char *dladm_linkstate2str(link_state_t, char *);
+extern const char *dladm_linkduplex2str(link_duplex_t, char *);
+extern const char *dladm_secobjclass2str(dladm_secobj_class_t, char *);
+extern dladm_status_t dladm_str2secobjclass(const char *,
+ dladm_secobj_class_t *);
+
+extern dladm_status_t dladm_init_linkprop(void);
+extern dladm_status_t dladm_init_secobj(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LIBDLLINK_H */
diff --git a/usr/src/lib/libwladm/common/libwladm.c b/usr/src/lib/libdladm/common/libdlwlan.c
index 7724008ee5..d7608eede1 100644
--- a/usr/src/lib/libwladm/common/libwladm.c
+++ b/usr/src/lib/libdladm/common/libdlwlan.c
@@ -37,8 +37,8 @@
#include <net/if.h>
#include <net/if_dl.h>
#include <net/if_types.h>
-#include <libwladm.h>
-#include <libwladm_impl.h>
+#include <libdlwlan.h>
+#include <libdlwlan_impl.h>
#include <inet/wifi_ioctl.h>
typedef struct val_desc {
@@ -48,19 +48,19 @@ typedef struct val_desc {
struct prop_desc;
-typedef wladm_status_t pd_getf_t(int, wldp_t *, char **, uint_t *);
-typedef wladm_status_t pd_setf_t(int, wldp_t *, val_desc_t *, uint_t);
-typedef wladm_status_t pd_checkf_t(int, wldp_t *, struct prop_desc *, char **,
- uint_t, val_desc_t **);
+typedef dladm_status_t wl_pd_getf_t(int, wldp_t *, char **, uint_t *);
+typedef dladm_status_t wl_pd_setf_t(int, wldp_t *, val_desc_t *, uint_t);
+typedef dladm_status_t wl_pd_checkf_t(int, wldp_t *, struct prop_desc *,
+ char **, uint_t, val_desc_t **);
typedef struct prop_desc {
char *pd_name;
val_desc_t pd_defval;
val_desc_t *pd_modval;
uint_t pd_nmodval;
- pd_setf_t *pd_set;
- pd_getf_t *pd_getmod;
- pd_getf_t *pd_get;
- pd_checkf_t *pd_check;
+ wl_pd_setf_t *pd_set;
+ wl_pd_getf_t *pd_getmod;
+ wl_pd_getf_t *pd_get;
+ wl_pd_checkf_t *pd_check;
} prop_desc_t;
static int do_get_bsstype(int, wldp_t *);
@@ -77,93 +77,76 @@ static int do_get_powermode(int, wldp_t *);
static int do_get_radio(int, wldp_t *);
static int do_get_mode(int, wldp_t *);
-static int do_set_bsstype(int, wldp_t *, wladm_bsstype_t *);
-static int do_set_authmode(int, wldp_t *, wladm_auth_t *);
-static int do_set_encryption(int, wldp_t *, wladm_secmode_t *);
-static int do_set_essid(int, wldp_t *, wladm_essid_t *);
+static int do_set_bsstype(int, wldp_t *, dladm_wlan_bsstype_t *);
+static int do_set_authmode(int, wldp_t *, dladm_wlan_auth_t *);
+static int do_set_encryption(int, wldp_t *, dladm_wlan_secmode_t *);
+static int do_set_essid(int, wldp_t *, dladm_wlan_essid_t *);
static int do_set_createibss(int, wldp_t *, boolean_t *);
-static int do_set_wepkey(int, wldp_t *, wladm_wep_key_t *, uint_t);
-static int do_set_rate(int, wldp_t *, wladm_rates_t *);
-static int do_set_powermode(int, wldp_t *, wladm_powermode_t *);
-static int do_set_radio(int, wldp_t *, wladm_radio_t *);
-static int do_set_channel(int, wldp_t *, wladm_channel_t *);
+static int do_set_wepkey(int, wldp_t *, dladm_wlan_wepkey_t *, uint_t);
+static int do_set_rate(int, wldp_t *, dladm_wlan_rates_t *);
+static int do_set_powermode(int, wldp_t *, dladm_wlan_powermode_t *);
+static int do_set_radio(int, wldp_t *, dladm_wlan_radio_t *);
+static int do_set_channel(int, wldp_t *, dladm_wlan_channel_t *);
static int open_link(const char *);
static int do_scan(int, wldp_t *);
static int do_disconnect(int, wldp_t *);
static boolean_t find_val_by_name(const char *, val_desc_t *, uint_t, uint_t *);
static boolean_t find_name_by_val(uint_t, val_desc_t *, uint_t, char **);
-static void generate_essid(wladm_essid_t *);
+static void generate_essid(dladm_wlan_essid_t *);
-static wladm_status_t wladm_wlresult2status(wldp_t *);
+static dladm_status_t dladm_wlan_wlresult2status(wldp_t *);
-static pd_getf_t do_get_rate_mod, do_get_rate_prop, do_get_channel_prop,
+static wl_pd_getf_t do_get_rate_mod, do_get_rate_prop, do_get_channel_prop,
do_get_powermode_prop, do_get_radio_prop;
-static pd_setf_t do_set_rate_prop, do_set_powermode_prop,
+static wl_pd_setf_t do_set_rate_prop, do_set_powermode_prop,
do_set_radio_prop;
-static pd_checkf_t do_check_prop, do_check_rate;
-
-static val_desc_t status_vals[] = {
- { "ok", WLADM_STATUS_OK },
- { "invalid argument", WLADM_STATUS_BADARG },
- { "operation failed", WLADM_STATUS_FAILED },
- { "operation not supported", WLADM_STATUS_NOTSUP },
- { "already connected", WLADM_STATUS_ISCONN },
- { "not connected", WLADM_STATUS_NOTCONN },
- { "not found", WLADM_STATUS_NOTFOUND },
- { "value not found", WLADM_STATUS_BADVAL },
- { "invalid link", WLADM_STATUS_LINKINVAL },
- { "insufficient memory", WLADM_STATUS_NOMEM },
- { "operation timed out", WLADM_STATUS_TIMEDOUT },
- { "read-only property", WLADM_STATUS_PROPRDONLY },
- { "not enough space", WLADM_STATUS_TOOSMALL },
- { "invalid number of values", WLADM_STATUS_BADVALCNT }
-};
+static wl_pd_checkf_t do_check_prop, do_check_rate;
static val_desc_t linkstatus_vals[] = {
- { "disconnected", WLADM_LINK_STATUS_DISCONNECTED },
- { "connected", WLADM_LINK_STATUS_CONNECTED }
+ { "disconnected", DLADM_WLAN_LINKSTATUS_DISCONNECTED },
+ { "connected", DLADM_WLAN_LINKSTATUS_CONNECTED }
};
static val_desc_t secmode_vals[] = {
- { "none", WLADM_SECMODE_NONE },
- { "wep", WLADM_SECMODE_WEP }
+ { "none", DLADM_WLAN_SECMODE_NONE },
+ { "wep", DLADM_WLAN_SECMODE_WEP }
};
static val_desc_t strength_vals[] = {
- { "very weak", WLADM_STRENGTH_VERY_WEAK },
- { "weak", WLADM_STRENGTH_WEAK },
- { "good", WLADM_STRENGTH_GOOD },
- { "very good", WLADM_STRENGTH_VERY_GOOD },
- { "excellent", WLADM_STRENGTH_EXCELLENT }
+ { "very weak", DLADM_WLAN_STRENGTH_VERY_WEAK },
+ { "weak", DLADM_WLAN_STRENGTH_WEAK },
+ { "good", DLADM_WLAN_STRENGTH_GOOD },
+ { "very good", DLADM_WLAN_STRENGTH_VERY_GOOD },
+ { "excellent", DLADM_WLAN_STRENGTH_EXCELLENT }
};
static val_desc_t mode_vals[] = {
- { "a", WLADM_MODE_80211A },
- { "b", WLADM_MODE_80211B },
- { "g", WLADM_MODE_80211G },
+ { "a", DLADM_WLAN_MODE_80211A },
+ { "b", DLADM_WLAN_MODE_80211B },
+ { "g", DLADM_WLAN_MODE_80211G },
};
static val_desc_t auth_vals[] = {
- { "open", WLADM_AUTH_OPEN },
- { "shared", WLADM_AUTH_SHARED }
+ { "open", DLADM_WLAN_AUTH_OPEN },
+ { "shared", DLADM_WLAN_AUTH_SHARED }
};
static val_desc_t bsstype_vals[] = {
- { "bss", WLADM_BSSTYPE_BSS },
- { "ibss", WLADM_BSSTYPE_IBSS },
- { "any", WLADM_BSSTYPE_ANY }
+ { "bss", DLADM_WLAN_BSSTYPE_BSS },
+ { "ibss", DLADM_WLAN_BSSTYPE_IBSS },
+ { "any", DLADM_WLAN_BSSTYPE_ANY }
};
static val_desc_t radio_vals[] = {
- { "on", WLADM_RADIO_ON },
- { "off", WLADM_RADIO_OFF }
+ { "on", DLADM_WLAN_RADIO_ON },
+ { "off", DLADM_WLAN_RADIO_OFF }
};
static val_desc_t powermode_vals[] = {
- { "off", WLADM_PM_OFF },
- { "fast", WLADM_PM_FAST },
- { "max", WLADM_PM_MAX }
+ { "off", DLADM_WLAN_PM_OFF },
+ { "fast", DLADM_WLAN_PM_FAST },
+ { "max", DLADM_WLAN_PM_MAX }
};
#define VALCNT(vals) (sizeof ((vals)) / sizeof (val_desc_t))
@@ -172,12 +155,12 @@ static prop_desc_t prop_table[] = {
{ "channel", { NULL, 0 }, NULL, 0,
NULL, NULL, do_get_channel_prop, do_check_prop},
- { "powermode", { "off", WLADM_PM_OFF }, powermode_vals,
+ { "powermode", { "off", DLADM_WLAN_PM_OFF }, powermode_vals,
VALCNT(powermode_vals),
do_set_powermode_prop, NULL,
do_get_powermode_prop, do_check_prop},
- { "radio", { "on", WLADM_RADIO_ON }, radio_vals,
+ { "radio", { "on", DLADM_WLAN_RADIO_ON }, radio_vals,
VALCNT(radio_vals),
do_set_radio_prop, NULL,
do_get_radio_prop, do_check_prop},
@@ -194,29 +177,29 @@ static prop_desc_t prop_table[] = {
* constant, MAX_SUPPORT_RATES, to allow all rates to be retrieved.
*/
#define MAX_SUPPORT_RATES 64
-#define WLADM_MAX_PROPS (sizeof (prop_table) / sizeof (prop_desc_t))
+#define DLADM_WLAN_MAX_PROPS (sizeof (prop_table) / sizeof (prop_desc_t))
#define IS_CONNECTED(gbuf) \
((*(wl_linkstatus_t *)((gbuf)->wldp_buf) == WL_CONNECTED))
-static wladm_status_t
-wladm_wlresult2status(wldp_t *gbuf)
+static dladm_status_t
+dladm_wlan_wlresult2status(wldp_t *gbuf)
{
switch (gbuf->wldp_result) {
case WL_SUCCESS:
- return (WLADM_STATUS_OK);
+ return (DLADM_STATUS_OK);
case WL_NOTSUPPORTED:
case WL_LACK_FEATURE:
- return (WLADM_STATUS_NOTSUP);
+ return (DLADM_STATUS_NOTSUP);
case WL_READONLY:
- return (WLADM_STATUS_PROPRDONLY);
+ return (DLADM_STATUS_PROPRDONLY);
default:
break;
}
- return (WLADM_STATUS_FAILED);
+ return (DLADM_STATUS_FAILED);
}
static int
@@ -251,22 +234,22 @@ open_link(const char *link)
return (fd);
}
-static wladm_mode_t
+static dladm_wlan_mode_t
do_convert_mode(wl_phy_conf_t *phyp)
{
switch (phyp->wl_phy_fhss_conf.wl_fhss_subtype) {
case WL_ERP:
- return (WLADM_MODE_80211G);
+ return (DLADM_WLAN_MODE_80211G);
case WL_OFDM:
- return (WLADM_MODE_80211A);
+ return (DLADM_WLAN_MODE_80211A);
case WL_DSSS:
case WL_FHSS:
- return (WLADM_MODE_80211B);
+ return (DLADM_WLAN_MODE_80211B);
default:
break;
}
- return (WLADM_MODE_NONE);
+ return (DLADM_WLAN_MODE_NONE);
}
static boolean_t
@@ -284,7 +267,7 @@ do_convert_chan(wl_phy_conf_t *phyp, uint32_t *channelp)
*channelp = wlfp->wl_fhss_channel;
break;
case WL_OFDM:
- *channelp = WLADM_OFDM2CHAN(wlop->wl_ofdm_frequency);
+ *channelp = DLADM_WLAN_OFDM2CHAN(wlop->wl_ofdm_frequency);
break;
default:
return (B_FALSE);
@@ -294,37 +277,37 @@ do_convert_chan(wl_phy_conf_t *phyp, uint32_t *channelp)
#define IEEE80211_RATE 0x7f
static void
-fill_wlan_attr(wl_ess_conf_t *wlp, wladm_wlan_attr_t *attrp)
+fill_wlan_attr(wl_ess_conf_t *wlp, dladm_wlan_attr_t *attrp)
{
int i;
(void) memset(attrp, 0, sizeof (*attrp));
- (void) snprintf(attrp->wa_essid.we_bytes, WLADM_MAX_ESSID_LEN, "%s",
- wlp->wl_ess_conf_essid.wl_essid_essid);
- attrp->wa_valid |= WLADM_WLAN_ATTR_ESSID;
+ (void) snprintf(attrp->wa_essid.we_bytes, DLADM_WLAN_MAX_ESSID_LEN,
+ "%s", wlp->wl_ess_conf_essid.wl_essid_essid);
+ attrp->wa_valid |= DLADM_WLAN_ATTR_ESSID;
(void) memcpy(attrp->wa_bssid.wb_bytes, wlp->wl_ess_conf_bssid,
- WLADM_BSSID_LEN);
- attrp->wa_valid |= WLADM_WLAN_ATTR_BSSID;
+ DLADM_WLAN_BSSID_LEN);
+ attrp->wa_valid |= DLADM_WLAN_ATTR_BSSID;
attrp->wa_secmode = (wlp->wl_ess_conf_wepenabled ==
- WL_ENC_WEP ? WLADM_SECMODE_WEP : WLADM_SECMODE_NONE);
- attrp->wa_valid |= WLADM_WLAN_ATTR_SECMODE;
+ WL_ENC_WEP ? DLADM_WLAN_SECMODE_WEP : DLADM_WLAN_SECMODE_NONE);
+ attrp->wa_valid |= DLADM_WLAN_ATTR_SECMODE;
attrp->wa_bsstype = (wlp->wl_ess_conf_bsstype == WL_BSS_BSS ?
- WLADM_BSSTYPE_BSS : WLADM_BSSTYPE_IBSS);
- attrp->wa_valid |= WLADM_WLAN_ATTR_BSSTYPE;
+ DLADM_WLAN_BSSTYPE_BSS : DLADM_WLAN_BSSTYPE_IBSS);
+ attrp->wa_valid |= DLADM_WLAN_ATTR_BSSTYPE;
attrp->wa_auth = (wlp->wl_ess_conf_authmode == 0 ?
- WLADM_AUTH_OPEN : WLADM_AUTH_SHARED);
- attrp->wa_valid |= WLADM_WLAN_ATTR_AUTH;
+ DLADM_WLAN_AUTH_OPEN : DLADM_WLAN_AUTH_SHARED);
+ attrp->wa_valid |= DLADM_WLAN_ATTR_AUTH;
- attrp->wa_strength = WLADM_SIGNAL2STRENGTH(wlp->wl_ess_conf_sl);
- attrp->wa_valid |= WLADM_WLAN_ATTR_STRENGTH;
+ attrp->wa_strength = DLADM_WLAN_SIGNAL2STRENGTH(wlp->wl_ess_conf_sl);
+ attrp->wa_valid |= DLADM_WLAN_ATTR_STRENGTH;
attrp->wa_mode = do_convert_mode((wl_phy_conf_t *)&wlp->wl_phy_conf);
- attrp->wa_valid |= WLADM_WLAN_ATTR_MODE;
+ attrp->wa_valid |= DLADM_WLAN_ATTR_MODE;
for (i = 0; i < MAX_SCAN_SUPPORT_RATES; i++) {
wlp->wl_supported_rates[i] &= IEEE80211_RATE;
@@ -332,46 +315,46 @@ fill_wlan_attr(wl_ess_conf_t *wlp, wladm_wlan_attr_t *attrp)
attrp->wa_speed = wlp->wl_supported_rates[i];
}
if (attrp->wa_speed > 0)
- attrp->wa_valid |= WLADM_WLAN_ATTR_SPEED;
+ attrp->wa_valid |= DLADM_WLAN_ATTR_SPEED;
if (do_convert_chan((wl_phy_conf_t *)&wlp->wl_phy_conf,
&attrp->wa_channel))
- attrp->wa_valid |= WLADM_WLAN_ATTR_CHANNEL;
+ attrp->wa_valid |= DLADM_WLAN_ATTR_CHANNEL;
}
-wladm_status_t
-wladm_scan(const char *link, void *arg,
- boolean_t (*func)(void *, wladm_wlan_attr_t *))
+dladm_status_t
+dladm_wlan_scan(const char *link, void *arg,
+ boolean_t (*func)(void *, dladm_wlan_attr_t *))
{
int fd, i;
uint32_t count;
wl_ess_conf_t *wlp;
wldp_t *gbuf;
- wladm_wlan_attr_t wlattr;
- wladm_status_t status;
+ dladm_wlan_attr_t wlattr;
+ dladm_status_t status;
boolean_t connected;
if ((fd = open_link(link)) < 0)
- return (WLADM_STATUS_LINKINVAL);
+ return (DLADM_STATUS_LINKINVAL);
if ((gbuf = malloc(MAX_BUF_LEN)) == NULL) {
- status = WLADM_STATUS_NOMEM;
+ status = DLADM_STATUS_NOMEM;
goto done;
}
if (do_get_linkstatus(fd, gbuf) < 0) {
- status = WLADM_STATUS_FAILED;
+ status = DLADM_STATUS_FAILED;
goto done;
}
connected = IS_CONNECTED(gbuf);
if (do_scan(fd, gbuf) < 0) {
- status = WLADM_STATUS_FAILED;
+ status = DLADM_STATUS_FAILED;
goto done;
}
if (do_get_esslist(fd, gbuf) < 0) {
- status = WLADM_STATUS_FAILED;
+ status = DLADM_STATUS_FAILED;
goto done;
}
@@ -386,14 +369,14 @@ wladm_scan(const char *link, void *arg,
if (!connected) {
if (do_get_linkstatus(fd, gbuf) < 0) {
- status = WLADM_STATUS_FAILED;
+ status = DLADM_STATUS_FAILED;
goto done;
}
if (IS_CONNECTED(gbuf))
(void) do_disconnect(fd, gbuf);
}
- status = WLADM_STATUS_OK;
+ status = DLADM_STATUS_OK;
done:
free(gbuf);
(void) close(fd);
@@ -409,12 +392,12 @@ done:
* For convenience, `cs_count' tracks the number of elements in the list.
*/
typedef struct attr_node {
- wladm_wlan_attr_t an_attr;
+ dladm_wlan_attr_t an_attr;
struct attr_node *an_next;
} attr_node_t;
typedef struct connect_state {
- wladm_wlan_attr_t *cs_attr;
+ dladm_wlan_attr_t *cs_attr;
uint_t cs_count;
attr_node_t *cs_list;
} connect_state_t;
@@ -422,15 +405,15 @@ typedef struct connect_state {
/*
* Compare two sets of WLAN attributes. For now, we only consider strength
* and speed (in that order), which matches the documented default policy for
- * wladm_connect().
+ * dladm_wlan_connect().
*/
static int
attr_compare(const void *p1, const void *p2)
{
- wladm_wlan_attr_t *attrp1, *attrp2;
+ dladm_wlan_attr_t *attrp1, *attrp2;
- attrp1 = (*(wladm_wlan_attr_t **)p1);
- attrp2 = (*(wladm_wlan_attr_t **)p2);
+ attrp1 = (*(dladm_wlan_attr_t **)p1);
+ attrp2 = (*(dladm_wlan_attr_t **)p2);
if (attrp1->wa_strength < attrp2->wa_strength)
return (1);
@@ -442,14 +425,15 @@ attr_compare(const void *p1, const void *p2)
}
/*
- * Callback function used by wladm_connect() to filter out unwanted WLANs when
- * scanning for available WLANs. Always returns B_TRUE to continue the scan.
+ * Callback function used by dladm_wlan_connect() to filter out unwanted
+ * WLANs when scanning for available WLANs. Always returns B_TRUE to
+ * continue the scan.
*/
static boolean_t
-connect_cb(void *arg, wladm_wlan_attr_t *attrp)
+connect_cb(void *arg, dladm_wlan_attr_t *attrp)
{
attr_node_t *nodep;
- wladm_wlan_attr_t *fattrp;
+ dladm_wlan_attr_t *fattrp;
connect_state_t *statep = (connect_state_t *)arg;
fattrp = statep->cs_attr;
@@ -459,46 +443,46 @@ connect_cb(void *arg, wladm_wlan_attr_t *attrp)
if ((fattrp->wa_valid & attrp->wa_valid) != fattrp->wa_valid)
return (B_TRUE);
- if ((fattrp->wa_valid & WLADM_WLAN_ATTR_ESSID) != 0 &&
+ if ((fattrp->wa_valid & DLADM_WLAN_ATTR_ESSID) != 0 &&
strncmp(fattrp->wa_essid.we_bytes, attrp->wa_essid.we_bytes,
- WLADM_MAX_ESSID_LEN) != 0)
+ DLADM_WLAN_MAX_ESSID_LEN) != 0)
return (B_TRUE);
- if ((fattrp->wa_valid & WLADM_WLAN_ATTR_SECMODE) != 0 &&
+ if ((fattrp->wa_valid & DLADM_WLAN_ATTR_SECMODE) != 0 &&
fattrp->wa_secmode != attrp->wa_secmode)
return (B_TRUE);
- if ((fattrp->wa_valid & WLADM_WLAN_ATTR_MODE) != 0 &&
+ if ((fattrp->wa_valid & DLADM_WLAN_ATTR_MODE) != 0 &&
fattrp->wa_mode != attrp->wa_mode)
return (B_TRUE);
- if ((fattrp->wa_valid & WLADM_WLAN_ATTR_STRENGTH) != 0 &&
+ if ((fattrp->wa_valid & DLADM_WLAN_ATTR_STRENGTH) != 0 &&
fattrp->wa_strength != attrp->wa_strength)
return (B_TRUE);
- if ((fattrp->wa_valid & WLADM_WLAN_ATTR_SPEED) != 0 &&
+ if ((fattrp->wa_valid & DLADM_WLAN_ATTR_SPEED) != 0 &&
fattrp->wa_speed != attrp->wa_speed)
return (B_TRUE);
- if ((fattrp->wa_valid & WLADM_WLAN_ATTR_AUTH) != 0) {
+ if ((fattrp->wa_valid & DLADM_WLAN_ATTR_AUTH) != 0) {
attrp->wa_auth = fattrp->wa_auth;
- attrp->wa_valid |= WLADM_WLAN_ATTR_AUTH;
+ attrp->wa_valid |= DLADM_WLAN_ATTR_AUTH;
}
- if ((fattrp->wa_valid & WLADM_WLAN_ATTR_BSSTYPE) != 0 &&
+ if ((fattrp->wa_valid & DLADM_WLAN_ATTR_BSSTYPE) != 0 &&
fattrp->wa_bsstype != attrp->wa_bsstype)
return (B_TRUE);
- if ((fattrp->wa_valid & WLADM_WLAN_ATTR_BSSID) != 0 &&
+ if ((fattrp->wa_valid & DLADM_WLAN_ATTR_BSSID) != 0 &&
memcmp(fattrp->wa_bssid.wb_bytes, attrp->wa_bssid.wb_bytes,
- WLADM_BSSID_LEN) != 0)
+ DLADM_WLAN_BSSID_LEN) != 0)
return (B_TRUE);
append:
nodep = malloc(sizeof (attr_node_t));
if (nodep == NULL)
return (B_TRUE);
- (void) memcpy(&nodep->an_attr, attrp, sizeof (wladm_wlan_attr_t));
+ (void) memcpy(&nodep->an_attr, attrp, sizeof (dladm_wlan_attr_t));
nodep->an_next = statep->cs_list;
statep->cs_list = nodep;
statep->cs_count++;
@@ -506,45 +490,45 @@ append:
return (B_TRUE);
}
-static wladm_status_t
-do_connect(int fd, wldp_t *gbuf, wladm_wlan_attr_t *attrp,
+static dladm_status_t
+do_connect(int fd, wldp_t *gbuf, dladm_wlan_attr_t *attrp,
boolean_t create_ibss, void *keys, uint_t key_count, int timeout)
{
- wladm_secmode_t secmode;
- wladm_auth_t authmode;
- wladm_bsstype_t bsstype;
- wladm_essid_t essid;
+ dladm_wlan_secmode_t secmode;
+ dladm_wlan_auth_t authmode;
+ dladm_wlan_bsstype_t bsstype;
+ dladm_wlan_essid_t essid;
boolean_t essid_valid = B_FALSE;
- wladm_channel_t channel;
+ dladm_wlan_channel_t channel;
hrtime_t start;
- if ((attrp->wa_valid & WLADM_WLAN_ATTR_CHANNEL) != 0) {
+ if ((attrp->wa_valid & DLADM_WLAN_ATTR_CHANNEL) != 0) {
channel = attrp->wa_channel;
if (do_set_channel(fd, gbuf, &channel) < 0)
goto fail;
}
- secmode = ((attrp->wa_valid & WLADM_WLAN_ATTR_SECMODE) != 0) ?
- attrp->wa_secmode : WLADM_SECMODE_NONE;
+ secmode = ((attrp->wa_valid & DLADM_WLAN_ATTR_SECMODE) != 0) ?
+ attrp->wa_secmode : DLADM_WLAN_SECMODE_NONE;
if (do_set_encryption(fd, gbuf, &secmode) < 0)
goto fail;
- authmode = ((attrp->wa_valid & WLADM_WLAN_ATTR_AUTH) != 0) ?
- attrp->wa_auth : WLADM_AUTH_OPEN;
+ authmode = ((attrp->wa_valid & DLADM_WLAN_ATTR_AUTH) != 0) ?
+ attrp->wa_auth : DLADM_WLAN_AUTH_OPEN;
if (do_set_authmode(fd, gbuf, &authmode) < 0)
goto fail;
- bsstype = ((attrp->wa_valid & WLADM_WLAN_ATTR_BSSTYPE) != 0) ?
- attrp->wa_bsstype : WLADM_BSSTYPE_BSS;
+ bsstype = ((attrp->wa_valid & DLADM_WLAN_ATTR_BSSTYPE) != 0) ?
+ attrp->wa_bsstype : DLADM_WLAN_BSSTYPE_BSS;
if (do_set_bsstype(fd, gbuf, &bsstype) < 0)
goto fail;
- if (secmode == WLADM_SECMODE_WEP) {
+ if (secmode == DLADM_WLAN_SECMODE_WEP) {
if (keys == NULL || key_count == 0 || key_count > MAX_NWEPKEYS)
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
if (do_set_wepkey(fd, gbuf, keys, key_count) < 0)
goto fail;
}
@@ -556,19 +540,19 @@ do_connect(int fd, wldp_t *gbuf, wladm_wlan_attr_t *attrp,
if (do_set_createibss(fd, gbuf, &create_ibss) < 0)
goto fail;
- if ((attrp->wa_valid & WLADM_WLAN_ATTR_ESSID) == 0) {
+ if ((attrp->wa_valid & DLADM_WLAN_ATTR_ESSID) == 0) {
generate_essid(&essid);
essid_valid = B_TRUE;
}
}
- if ((attrp->wa_valid & WLADM_WLAN_ATTR_ESSID) != 0) {
+ if ((attrp->wa_valid & DLADM_WLAN_ATTR_ESSID) != 0) {
essid = attrp->wa_essid;
essid_valid = B_TRUE;
}
if (!essid_valid)
- return (WLADM_STATUS_FAILED);
+ return (DLADM_STATUS_FAILED);
if (do_set_essid(fd, gbuf, &essid) < 0)
goto fail;
@@ -580,18 +564,18 @@ do_connect(int fd, wldp_t *gbuf, wladm_wlan_attr_t *attrp,
if (IS_CONNECTED(gbuf))
break;
- (void) poll(NULL, 0, WLADM_CONNECT_POLLRATE);
+ (void) poll(NULL, 0, DLADM_WLAN_CONNECT_POLLRATE);
if ((timeout >= 0) && (gethrtime() - start) /
NANOSEC >= timeout)
- return (WLADM_STATUS_TIMEDOUT);
+ return (DLADM_STATUS_TIMEDOUT);
}
- return (WLADM_STATUS_OK);
+ return (DLADM_STATUS_OK);
fail:
- return (wladm_wlresult2status(gbuf));
+ return (dladm_wlan_wlresult2status(gbuf));
}
-wladm_status_t
-wladm_connect(const char *link, wladm_wlan_attr_t *attrp,
+dladm_status_t
+dladm_wlan_connect(const char *link, dladm_wlan_attr_t *attrp,
int timeout, void *keys, uint_t key_count, uint_t flags)
{
int fd, i;
@@ -599,37 +583,37 @@ wladm_connect(const char *link, wladm_wlan_attr_t *attrp,
connect_state_t state = {0, NULL, NULL};
attr_node_t *nodep = NULL;
boolean_t create_ibss, set_authmode;
- wladm_wlan_attr_t **wl_list = NULL;
- wladm_status_t status = WLADM_STATUS_FAILED;
+ dladm_wlan_attr_t **wl_list = NULL;
+ dladm_status_t status = DLADM_STATUS_FAILED;
if ((fd = open_link(link)) < 0)
- return (WLADM_STATUS_LINKINVAL);
+ return (DLADM_STATUS_LINKINVAL);
if ((gbuf = malloc(MAX_BUF_LEN)) == NULL) {
- status = WLADM_STATUS_NOMEM;
+ status = DLADM_STATUS_NOMEM;
goto done;
}
if (do_get_linkstatus(fd, gbuf) < 0) {
- status = WLADM_STATUS_FAILED;
+ status = DLADM_STATUS_FAILED;
goto done;
}
if (IS_CONNECTED(gbuf)) {
- status = WLADM_STATUS_ISCONN;
+ status = DLADM_STATUS_ISCONN;
goto done;
}
set_authmode = ((attrp != NULL) &&
- (attrp->wa_valid & WLADM_WLAN_ATTR_MODE) != 0);
- create_ibss = ((flags & WLADM_OPT_CREATEIBSS) != 0 &&
+ (attrp->wa_valid & DLADM_WLAN_ATTR_MODE) != 0);
+ create_ibss = ((flags & DLADM_WLAN_CONNECT_CREATEIBSS) != 0 &&
attrp != NULL &&
- (attrp->wa_valid & WLADM_WLAN_ATTR_BSSTYPE) != 0 &&
- attrp->wa_bsstype == WLADM_BSSTYPE_IBSS);
+ (attrp->wa_valid & DLADM_WLAN_ATTR_BSSTYPE) != 0 &&
+ attrp->wa_bsstype == DLADM_WLAN_BSSTYPE_IBSS);
- if ((flags & WLADM_OPT_NOSCAN) != 0 ||
+ if ((flags & DLADM_WLAN_CONNECT_NOSCAN) != 0 ||
(create_ibss && attrp != NULL &&
- (attrp->wa_valid & WLADM_WLAN_ATTR_ESSID) == 0)) {
+ (attrp->wa_valid & DLADM_WLAN_ATTR_ESSID) == 0)) {
status = do_connect(fd, gbuf, attrp,
create_ibss, keys, key_count, timeout);
goto done;
@@ -639,13 +623,13 @@ wladm_connect(const char *link, wladm_wlan_attr_t *attrp,
state.cs_list = NULL;
state.cs_count = 0;
- status = wladm_scan(link, &state, connect_cb);
- if (status != WLADM_STATUS_OK)
+ status = dladm_wlan_scan(link, &state, connect_cb);
+ if (status != DLADM_STATUS_OK)
goto done;
if (state.cs_count == 0) {
if (!create_ibss) {
- status = WLADM_STATUS_NOTFOUND;
+ status = DLADM_STATUS_NOTFOUND;
goto done;
}
status = do_connect(fd, gbuf, attrp, create_ibss,
@@ -653,9 +637,9 @@ wladm_connect(const char *link, wladm_wlan_attr_t *attrp,
goto done;
}
- wl_list = malloc(state.cs_count * sizeof (wladm_wlan_attr_t *));
+ wl_list = malloc(state.cs_count * sizeof (dladm_wlan_attr_t *));
if (wl_list == NULL) {
- status = WLADM_STATUS_NOMEM;
+ status = DLADM_STATUS_NOMEM;
goto done;
}
@@ -664,28 +648,28 @@ wladm_connect(const char *link, wladm_wlan_attr_t *attrp,
wl_list[i] = &nodep->an_attr;
nodep = nodep->an_next;
}
- qsort(wl_list, state.cs_count, sizeof (wladm_wlan_attr_t *),
+ qsort(wl_list, state.cs_count, sizeof (dladm_wlan_attr_t *),
attr_compare);
for (i = 0; i < state.cs_count; i++) {
- wladm_wlan_attr_t *ap = wl_list[i];
+ dladm_wlan_attr_t *ap = wl_list[i];
status = do_connect(fd, gbuf, ap, create_ibss, keys,
key_count, timeout);
- if (status == WLADM_STATUS_OK)
+ if (status == DLADM_STATUS_OK)
break;
if (!set_authmode) {
- ap->wa_auth = WLADM_AUTH_SHARED;
- ap->wa_valid |= WLADM_WLAN_ATTR_AUTH;
+ ap->wa_auth = DLADM_WLAN_AUTH_SHARED;
+ ap->wa_valid |= DLADM_WLAN_ATTR_AUTH;
status = do_connect(fd, gbuf, ap, create_ibss, keys,
key_count, timeout);
- if (status == WLADM_STATUS_OK)
+ if (status == DLADM_STATUS_OK)
break;
}
}
done:
- if ((status != WLADM_STATUS_OK) && (status != WLADM_STATUS_ISCONN))
+ if ((status != DLADM_STATUS_OK) && (status != DLADM_STATUS_ISCONN))
(void) do_disconnect(fd, gbuf);
while (state.cs_list != NULL) {
@@ -699,70 +683,70 @@ done:
return (status);
}
-wladm_status_t
-wladm_disconnect(const char *link)
+dladm_status_t
+dladm_wlan_disconnect(const char *link)
{
int fd;
wldp_t *gbuf;
- wladm_status_t status;
+ dladm_status_t status;
if ((fd = open_link(link)) < 0)
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
if ((gbuf = malloc(MAX_BUF_LEN)) == NULL) {
- status = WLADM_STATUS_NOMEM;
+ status = DLADM_STATUS_NOMEM;
goto done;
}
if (do_get_linkstatus(fd, gbuf) < 0) {
- status = WLADM_STATUS_FAILED;
+ status = DLADM_STATUS_FAILED;
goto done;
}
if (!IS_CONNECTED(gbuf)) {
- status = WLADM_STATUS_NOTCONN;
+ status = DLADM_STATUS_NOTCONN;
goto done;
}
if (do_disconnect(fd, gbuf) < 0) {
- status = WLADM_STATUS_FAILED;
+ status = DLADM_STATUS_FAILED;
goto done;
}
if (do_get_linkstatus(fd, gbuf) < 0) {
- status = WLADM_STATUS_FAILED;
+ status = DLADM_STATUS_FAILED;
goto done;
}
if (IS_CONNECTED(gbuf)) {
- status = WLADM_STATUS_FAILED;
+ status = DLADM_STATUS_FAILED;
goto done;
}
- status = WLADM_STATUS_OK;
+ status = DLADM_STATUS_OK;
done:
free(gbuf);
(void) close(fd);
return (status);
}
-typedef struct wladm_linkname {
+typedef struct dladm_wlan_linkname {
char wl_name[MAXNAMELEN];
- struct wladm_linkname *wl_next;
-} wladm_linkname_t;
+ struct dladm_wlan_linkname *wl_next;
+} dladm_wlan_linkname_t;
-typedef struct wladm_walk {
- wladm_linkname_t *ww_list;
- wladm_status_t ww_status;
-} wladm_walk_t;
+typedef struct dladm_wlan_walk {
+ dladm_wlan_linkname_t *ww_list;
+ dladm_status_t ww_status;
+} dladm_wlan_walk_t;
/* ARGSUSED */
static int
append_linkname(di_node_t node, di_minor_t minor, void *arg)
{
- wladm_walk_t *statep = arg;
- wladm_linkname_t **lastp = &statep->ww_list;
- wladm_linkname_t *wlp = *lastp;
+ dladm_wlan_walk_t *statep = arg;
+ dladm_wlan_linkname_t **lastp = &statep->ww_list;
+ dladm_wlan_linkname_t *wlp = *lastp;
char name[MAXNAMELEN];
(void) snprintf(name, MAXNAMELEN, "%s%d",
@@ -776,7 +760,7 @@ append_linkname(di_node_t node, di_minor_t minor, void *arg)
wlp = wlp->wl_next;
}
if ((wlp = malloc(sizeof (*wlp))) == NULL) {
- statep->ww_status = WLADM_STATUS_NOMEM;
+ statep->ww_status = DLADM_STATUS_NOMEM;
return (DI_WALK_CONTINUE);
}
@@ -787,19 +771,19 @@ append_linkname(di_node_t node, di_minor_t minor, void *arg)
return (DI_WALK_CONTINUE);
}
-wladm_status_t
-wladm_walk(void *arg, boolean_t (*func)(void *, const char *))
+dladm_status_t
+dladm_wlan_walk(void *arg, boolean_t (*func)(void *, const char *))
{
di_node_t root;
- wladm_walk_t state;
- wladm_linkname_t *wlp, *wlp_next;
+ dladm_wlan_walk_t state;
+ dladm_wlan_linkname_t *wlp, *wlp_next;
boolean_t cont = B_TRUE;
if ((root = di_init("/", DINFOCACHE)) == DI_NODE_NIL)
- return (WLADM_STATUS_FAILED);
+ return (DLADM_STATUS_FAILED);
state.ww_list = NULL;
- state.ww_status = WLADM_STATUS_OK;
+ state.ww_status = DLADM_STATUS_OK;
(void) di_walk_minor(root, DDI_NT_NET_WIFI, DI_CHECK_ALIAS,
&state, append_linkname);
di_fini(root);
@@ -817,8 +801,8 @@ wladm_walk(void *arg, boolean_t (*func)(void *, const char *))
return (state.ww_status);
}
-wladm_status_t
-wladm_get_link_attr(const char *link, wladm_link_attr_t *attrp)
+dladm_status_t
+dladm_wlan_get_linkattr(const char *link, dladm_wlan_linkattr_t *attrp)
{
int fd;
wldp_t *gbuf;
@@ -827,17 +811,17 @@ wladm_get_link_attr(const char *link, wladm_link_attr_t *attrp)
wl_authmode_t authmode;
wl_encryption_t encryption;
wl_rates_t *ratesp;
- wladm_wlan_attr_t *wl_attrp;
- wladm_status_t status = WLADM_STATUS_FAILED;
+ dladm_wlan_attr_t *wl_attrp;
+ dladm_status_t status = DLADM_STATUS_FAILED;
if (attrp == NULL)
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
if ((fd = open_link(link)) < 0)
- return (WLADM_STATUS_LINKINVAL);
+ return (DLADM_STATUS_LINKINVAL);
if ((gbuf = malloc(MAX_BUF_LEN)) == NULL) {
- status = WLADM_STATUS_NOMEM;
+ status = DLADM_STATUS_NOMEM;
goto done;
}
@@ -847,46 +831,46 @@ wladm_get_link_attr(const char *link, wladm_link_attr_t *attrp)
if (do_get_linkstatus(fd, gbuf) < 0)
goto done;
- attrp->la_valid |= WLADM_LINK_ATTR_STATUS;
+ attrp->la_valid |= DLADM_WLAN_LINKATTR_STATUS;
if (!IS_CONNECTED(gbuf)) {
- attrp->la_status = WLADM_LINK_STATUS_DISCONNECTED;
- status = WLADM_STATUS_OK;
+ attrp->la_status = DLADM_WLAN_LINKSTATUS_DISCONNECTED;
+ status = DLADM_STATUS_OK;
goto done;
}
- attrp->la_status = WLADM_LINK_STATUS_CONNECTED;
+ attrp->la_status = DLADM_WLAN_LINKSTATUS_CONNECTED;
if (do_get_essid(fd, gbuf) < 0)
goto done;
(void) strlcpy(wl_attrp->wa_essid.we_bytes,
((wl_essid_t *)(gbuf->wldp_buf))->wl_essid_essid,
- WLADM_MAX_ESSID_LEN);
+ DLADM_WLAN_MAX_ESSID_LEN);
- wl_attrp->wa_valid |= WLADM_WLAN_ATTR_ESSID;
+ wl_attrp->wa_valid |= DLADM_WLAN_ATTR_ESSID;
if (do_get_bssid(fd, gbuf) < 0)
goto done;
(void) memcpy(wl_attrp->wa_bssid.wb_bytes, gbuf->wldp_buf,
- WLADM_BSSID_LEN);
+ DLADM_WLAN_BSSID_LEN);
- wl_attrp->wa_valid |= WLADM_WLAN_ATTR_BSSID;
+ wl_attrp->wa_valid |= DLADM_WLAN_ATTR_BSSID;
if (do_get_encryption(fd, gbuf) < 0)
goto done;
encryption = *(wl_encryption_t *)(gbuf->wldp_buf);
- wl_attrp->wa_valid |= WLADM_WLAN_ATTR_SECMODE;
+ wl_attrp->wa_valid |= DLADM_WLAN_ATTR_SECMODE;
switch (encryption) {
case WL_NOENCRYPTION:
- wl_attrp->wa_secmode = WLADM_SECMODE_NONE;
+ wl_attrp->wa_secmode = DLADM_WLAN_SECMODE_NONE;
break;
case WL_ENC_WEP:
- wl_attrp->wa_secmode = WLADM_SECMODE_WEP;
+ wl_attrp->wa_secmode = DLADM_WLAN_SECMODE_WEP;
break;
default:
- wl_attrp->wa_valid &= ~WLADM_WLAN_ATTR_SECMODE;
+ wl_attrp->wa_valid &= ~DLADM_WLAN_ATTR_SECMODE;
break;
}
@@ -894,8 +878,8 @@ wladm_get_link_attr(const char *link, wladm_link_attr_t *attrp)
goto done;
signal = *(wl_rssi_t *)(gbuf->wldp_buf);
- wl_attrp->wa_valid |= WLADM_WLAN_ATTR_STRENGTH;
- wl_attrp->wa_strength = WLADM_SIGNAL2STRENGTH(signal);
+ wl_attrp->wa_valid |= DLADM_WLAN_ATTR_STRENGTH;
+ wl_attrp->wa_strength = DLADM_WLAN_SIGNAL2STRENGTH(signal);
if (do_get_rate(fd, gbuf) < 0)
goto done;
@@ -909,24 +893,24 @@ wladm_get_link_attr(const char *link, wladm_link_attr_t *attrp)
r = ratesp->wl_rates_rates[i];
}
wl_attrp->wa_speed = r;
- wl_attrp->wa_valid |= WLADM_WLAN_ATTR_SPEED;
+ wl_attrp->wa_valid |= DLADM_WLAN_ATTR_SPEED;
}
if (do_get_authmode(fd, gbuf) < 0)
goto done;
authmode = *(wl_authmode_t *)(gbuf->wldp_buf);
- wl_attrp->wa_valid |= WLADM_WLAN_ATTR_AUTH;
+ wl_attrp->wa_valid |= DLADM_WLAN_ATTR_AUTH;
switch (authmode) {
case WL_OPENSYSTEM:
- wl_attrp->wa_auth = WLADM_AUTH_OPEN;
+ wl_attrp->wa_auth = DLADM_WLAN_AUTH_OPEN;
break;
case WL_SHAREDKEY:
- wl_attrp->wa_auth = WLADM_AUTH_SHARED;
+ wl_attrp->wa_auth = DLADM_WLAN_AUTH_SHARED;
break;
default:
- wl_attrp->wa_valid &= ~WLADM_WLAN_ATTR_AUTH;
+ wl_attrp->wa_valid &= ~DLADM_WLAN_ATTR_AUTH;
break;
}
@@ -934,20 +918,20 @@ wladm_get_link_attr(const char *link, wladm_link_attr_t *attrp)
goto done;
bsstype = *(wl_bss_type_t *)(gbuf->wldp_buf);
- wl_attrp->wa_valid |= WLADM_WLAN_ATTR_BSSTYPE;
+ wl_attrp->wa_valid |= DLADM_WLAN_ATTR_BSSTYPE;
switch (bsstype) {
case WL_BSS_BSS:
- wl_attrp->wa_bsstype = WLADM_BSSTYPE_BSS;
+ wl_attrp->wa_bsstype = DLADM_WLAN_BSSTYPE_BSS;
break;
case WL_BSS_IBSS:
- wl_attrp->wa_bsstype = WLADM_BSSTYPE_IBSS;
+ wl_attrp->wa_bsstype = DLADM_WLAN_BSSTYPE_IBSS;
break;
case WL_BSS_ANY:
- wl_attrp->wa_bsstype = WLADM_BSSTYPE_ANY;
+ wl_attrp->wa_bsstype = DLADM_WLAN_BSSTYPE_ANY;
break;
default:
- wl_attrp->wa_valid &= ~WLADM_WLAN_ATTR_BSSTYPE;
+ wl_attrp->wa_valid &= ~DLADM_WLAN_ATTR_BSSTYPE;
break;
}
@@ -955,12 +939,12 @@ wladm_get_link_attr(const char *link, wladm_link_attr_t *attrp)
goto done;
wl_attrp->wa_mode = do_convert_mode((wl_phy_conf_t *)(gbuf->wldp_buf));
- wl_attrp->wa_valid |= WLADM_WLAN_ATTR_MODE;
- if (wl_attrp->wa_mode != WLADM_MODE_NONE)
- wl_attrp->wa_valid |= WLADM_WLAN_ATTR_MODE;
+ wl_attrp->wa_valid |= DLADM_WLAN_ATTR_MODE;
+ if (wl_attrp->wa_mode != DLADM_WLAN_MODE_NONE)
+ wl_attrp->wa_valid |= DLADM_WLAN_ATTR_MODE;
- attrp->la_valid |= WLADM_LINK_ATTR_WLAN;
- status = WLADM_STATUS_OK;
+ attrp->la_valid |= DLADM_WLAN_LINKATTR_WLAN;
+ status = DLADM_STATUS_OK;
done:
free(gbuf);
@@ -969,7 +953,7 @@ done:
}
boolean_t
-wladm_is_valid(const char *link)
+dladm_wlan_is_valid(const char *link)
{
int fd = open_link(link);
@@ -981,7 +965,7 @@ wladm_is_valid(const char *link)
}
/* ARGSUSED */
-static wladm_status_t
+static dladm_status_t
do_check_prop(int fd, wldp_t *guf, prop_desc_t *pdp, char **prop_val,
uint_t val_cnt, val_desc_t **vdpp)
{
@@ -989,93 +973,93 @@ do_check_prop(int fd, wldp_t *guf, prop_desc_t *pdp, char **prop_val,
val_desc_t *vdp;
if (pdp->pd_nmodval == 0)
- return (WLADM_STATUS_PROPRDONLY);
+ return (DLADM_STATUS_PROPRDONLY);
if (val_cnt != 1)
- return (WLADM_STATUS_BADVALCNT);
+ return (DLADM_STATUS_BADVALCNT);
for (i = 0; i < pdp->pd_nmodval; i++)
if (strcasecmp(*prop_val, pdp->pd_modval[i].vd_name) == 0)
break;
if (i == pdp->pd_nmodval)
- return (WLADM_STATUS_BADVAL);
+ return (DLADM_STATUS_BADVAL);
vdp = malloc(sizeof (val_desc_t));
if (vdp == NULL)
- return (WLADM_STATUS_NOMEM);
+ return (DLADM_STATUS_NOMEM);
(void) memcpy(vdp, &pdp->pd_modval[i], sizeof (val_desc_t));
*vdpp = vdp;
- return (WLADM_STATUS_OK);
+ return (DLADM_STATUS_OK);
}
-static wladm_status_t
+static dladm_status_t
do_set_prop(int fd, wldp_t *gbuf, prop_desc_t *pdp,
char **prop_val, uint_t val_cnt)
{
- wladm_status_t status;
+ dladm_status_t status;
val_desc_t *vdp = NULL;
uint_t cnt;
if (pdp->pd_set == NULL)
- return (WLADM_STATUS_PROPRDONLY);
+ return (DLADM_STATUS_PROPRDONLY);
if (prop_val != NULL) {
status = pdp->pd_check(fd, gbuf, pdp, prop_val,
val_cnt, &vdp);
- if (status != WLADM_STATUS_OK)
+ if (status != DLADM_STATUS_OK)
return (status);
cnt = val_cnt;
} else {
if (pdp->pd_defval.vd_name == NULL)
- return (WLADM_STATUS_NOTSUP);
+ return (DLADM_STATUS_NOTSUP);
if ((vdp = malloc(sizeof (val_desc_t))) == NULL)
- return (WLADM_STATUS_NOMEM);
+ return (DLADM_STATUS_NOMEM);
*vdp = pdp->pd_defval;
cnt = 1;
}
status = pdp->pd_set(fd, gbuf, vdp, cnt);
- if (status == WLADM_STATUS_OK) {
+ if (status == DLADM_STATUS_OK) {
/*
* Some ioctls return 0 but store error code in
* wldp_result. Need to fix them.
*/
if (gbuf->wldp_result != WL_SUCCESS)
- status = wladm_wlresult2status(gbuf);
+ status = dladm_wlan_wlresult2status(gbuf);
}
free(vdp);
return (status);
}
-wladm_status_t
-wladm_set_prop(const char *link, const char *prop_name,
+dladm_status_t
+dladm_wlan_set_prop(const char *link, const char *prop_name,
char **prop_val, uint_t val_cnt, char **errprop)
{
int fd, i;
wldp_t *gbuf = NULL;
boolean_t found = B_FALSE;
- wladm_status_t status = WLADM_STATUS_OK;
+ dladm_status_t status = DLADM_STATUS_OK;
if ((prop_name == NULL && prop_val != NULL) ||
(prop_val != NULL && val_cnt == 0))
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
if ((fd = open_link(link)) < 0)
- return (WLADM_STATUS_LINKINVAL);
+ return (DLADM_STATUS_LINKINVAL);
if ((gbuf = malloc(MAX_BUF_LEN)) == NULL) {
- status = WLADM_STATUS_NOMEM;
+ status = DLADM_STATUS_NOMEM;
goto done;
}
- for (i = 0; i < WLADM_MAX_PROPS; i++) {
+ for (i = 0; i < DLADM_WLAN_MAX_PROPS; i++) {
prop_desc_t *pdp = &prop_table[i];
- wladm_status_t s;
+ dladm_status_t s;
if (prop_name != NULL &&
(strcasecmp(prop_name, pdp->pd_name) != 0))
@@ -1088,8 +1072,8 @@ wladm_set_prop(const char *link, const char *prop_name,
status = s;
break;
} else {
- if (s != WLADM_STATUS_OK &&
- s != WLADM_STATUS_NOTSUP) {
+ if (s != DLADM_STATUS_OK &&
+ s != DLADM_STATUS_NOTSUP) {
if (errprop != NULL)
*errprop = pdp->pd_name;
status = s;
@@ -1098,7 +1082,7 @@ wladm_set_prop(const char *link, const char *prop_name,
}
}
if (!found)
- status = WLADM_STATUS_NOTFOUND;
+ status = DLADM_STATUS_NOTFOUND;
done:
free(gbuf);
(void) close(fd);
@@ -1106,74 +1090,74 @@ done:
}
/* ARGSUSED */
-wladm_status_t
-wladm_walk_prop(const char *link, void *arg,
+dladm_status_t
+dladm_wlan_walk_prop(const char *link, void *arg,
boolean_t (*func)(void *, const char *))
{
int i;
- for (i = 0; i < WLADM_MAX_PROPS; i++) {
+ for (i = 0; i < DLADM_WLAN_MAX_PROPS; i++) {
if (!func(arg, prop_table[i].pd_name))
break;
}
- return (WLADM_STATUS_OK);
+ return (DLADM_STATUS_OK);
}
-wladm_status_t
-wladm_get_prop(const char *link, wladm_prop_type_t type, const char *prop_name,
- char **prop_val, uint_t *val_cnt)
+dladm_status_t
+dladm_wlan_get_prop(const char *link, dladm_prop_type_t type,
+ const char *prop_name, char **prop_val, uint_t *val_cnt)
{
int fd;
int i;
wldp_t *gbuf;
- wladm_status_t status;
+ dladm_status_t status;
uint_t cnt;
prop_desc_t *pdp;
if (prop_val == NULL || val_cnt == NULL || *val_cnt == 0)
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
- for (i = 0; i < WLADM_MAX_PROPS; i++)
+ for (i = 0; i < DLADM_WLAN_MAX_PROPS; i++)
if (strcasecmp(prop_name, prop_table[i].pd_name) == 0)
break;
- if (i == WLADM_MAX_PROPS)
- return (WLADM_STATUS_NOTFOUND);
+ if (i == DLADM_WLAN_MAX_PROPS)
+ return (DLADM_STATUS_NOTFOUND);
if ((fd = open_link(link)) < 0)
- return (WLADM_STATUS_LINKINVAL);
+ return (DLADM_STATUS_LINKINVAL);
if ((gbuf = malloc(MAX_BUF_LEN)) == NULL) {
- status = WLADM_STATUS_NOMEM;
+ status = DLADM_STATUS_NOMEM;
goto done;
}
pdp = &prop_table[i];
- status = WLADM_STATUS_OK;
+ status = DLADM_STATUS_OK;
switch (type) {
- case WLADM_PROP_VAL_CURRENT:
+ case DLADM_PROP_VAL_CURRENT:
status = pdp->pd_get(fd, gbuf, prop_val, val_cnt);
break;
- case WLADM_PROP_VAL_DEFAULT:
+ case DLADM_PROP_VAL_DEFAULT:
if (pdp->pd_defval.vd_name == NULL) {
- status = WLADM_STATUS_NOTSUP;
+ status = DLADM_STATUS_NOTSUP;
break;
}
(void) strcpy(*prop_val, pdp->pd_defval.vd_name);
*val_cnt = 1;
break;
- case WLADM_PROP_VAL_MODIFIABLE:
+ case DLADM_PROP_VAL_MODIFIABLE:
if (pdp->pd_getmod != NULL) {
status = pdp->pd_getmod(fd, gbuf, prop_val, val_cnt);
break;
}
cnt = pdp->pd_nmodval;
if (cnt == 0) {
- status = WLADM_STATUS_NOTSUP;
+ status = DLADM_STATUS_NOTSUP;
} else if (cnt > *val_cnt) {
- status = WLADM_STATUS_TOOSMALL;
+ status = DLADM_STATUS_TOOSMALL;
} else {
for (i = 0; i < cnt; i++) {
(void) strcpy(prop_val[i],
@@ -1183,7 +1167,7 @@ wladm_get_prop(const char *link, wladm_prop_type_t type, const char *prop_name,
}
break;
default:
- status = WLADM_STATUS_BADARG;
+ status = DLADM_STATUS_BADARG;
break;
}
done:
@@ -1221,199 +1205,189 @@ find_name_by_val(uint_t val, val_desc_t *vdp, uint_t cnt, char **strp)
}
const char *
-wladm_essid2str(wladm_essid_t *essid, char *buf)
+dladm_wlan_essid2str(dladm_wlan_essid_t *essid, char *buf)
{
- (void) snprintf(buf, WLADM_STRSIZE, "%s", essid->we_bytes);
+ (void) snprintf(buf, DLADM_STRSIZE, "%s", essid->we_bytes);
return (buf);
}
const char *
-wladm_bssid2str(wladm_bssid_t *bssid, char *buf)
+dladm_wlan_bssid2str(dladm_wlan_bssid_t *bssid, char *buf)
{
- return (_link_ntoa(bssid->wb_bytes, buf, WLADM_BSSID_LEN, IFT_OTHER));
+ return (_link_ntoa(bssid->wb_bytes, buf, DLADM_WLAN_BSSID_LEN,
+ IFT_OTHER));
}
static const char *
-wladm_val2str(uint_t val, val_desc_t *vdp, uint_t cnt, char *buf)
+dladm_wlan_val2str(uint_t val, val_desc_t *vdp, uint_t cnt, char *buf)
{
char *s;
if (!find_name_by_val(val, vdp, cnt, &s))
s = "";
- (void) snprintf(buf, WLADM_STRSIZE, "%s", s);
+ (void) snprintf(buf, DLADM_STRSIZE, "%s", s);
return (buf);
}
const char *
-wladm_secmode2str(wladm_secmode_t *secmode, char *buf)
+dladm_wlan_secmode2str(dladm_wlan_secmode_t *secmode, char *buf)
{
- return (wladm_val2str((uint_t)*secmode, secmode_vals,
+ return (dladm_wlan_val2str((uint_t)*secmode, secmode_vals,
VALCNT(secmode_vals), buf));
}
const char *
-wladm_strength2str(wladm_strength_t *strength, char *buf)
+dladm_wlan_strength2str(dladm_wlan_strength_t *strength, char *buf)
{
- return (wladm_val2str((uint_t)*strength, strength_vals,
+ return (dladm_wlan_val2str((uint_t)*strength, strength_vals,
VALCNT(strength_vals), buf));
}
const char *
-wladm_mode2str(wladm_mode_t *mode, char *buf)
+dladm_wlan_mode2str(dladm_wlan_mode_t *mode, char *buf)
{
- return (wladm_val2str((uint_t)*mode, mode_vals,
+ return (dladm_wlan_val2str((uint_t)*mode, mode_vals,
VALCNT(mode_vals), buf));
}
const char *
-wladm_speed2str(wladm_speed_t *speed, char *buf)
+dladm_wlan_speed2str(dladm_wlan_speed_t *speed, char *buf)
{
- (void) snprintf(buf, WLADM_STRSIZE, "%.*f", *speed % 2,
+ (void) snprintf(buf, DLADM_STRSIZE, "%.*f", *speed % 2,
(float)(*speed) / 2);
return (buf);
}
const char *
-wladm_auth2str(wladm_auth_t *auth, char *buf)
+dladm_wlan_auth2str(dladm_wlan_auth_t *auth, char *buf)
{
- return (wladm_val2str((uint_t)*auth, auth_vals,
+ return (dladm_wlan_val2str((uint_t)*auth, auth_vals,
VALCNT(auth_vals), buf));
}
const char *
-wladm_bsstype2str(wladm_bsstype_t *bsstype, char *buf)
+dladm_wlan_bsstype2str(dladm_wlan_bsstype_t *bsstype, char *buf)
{
- return (wladm_val2str((uint_t)*bsstype, bsstype_vals,
+ return (dladm_wlan_val2str((uint_t)*bsstype, bsstype_vals,
VALCNT(bsstype_vals), buf));
}
const char *
-wladm_linkstatus2str(wladm_linkstatus_t *linkstatus, char *buf)
+dladm_wlan_linkstatus2str(dladm_wlan_linkstatus_t *linkstatus, char *buf)
{
- return (wladm_val2str((uint_t)*linkstatus, linkstatus_vals,
+ return (dladm_wlan_val2str((uint_t)*linkstatus, linkstatus_vals,
VALCNT(linkstatus_vals), buf));
}
-const char *
-wladm_status2str(wladm_status_t status, char *buf)
-{
- const char *s;
-
- s = wladm_val2str((uint_t)status, status_vals,
- VALCNT(status_vals), buf);
- (void) snprintf(buf, WLADM_STRSIZE, "%s", dgettext(TEXT_DOMAIN, s));
- return (buf);
-}
-
-wladm_status_t
-wladm_str2essid(const char *str, wladm_essid_t *essid)
+dladm_status_t
+dladm_wlan_str2essid(const char *str, dladm_wlan_essid_t *essid)
{
if (str[0] == '\0')
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
- (void) strlcpy(essid->we_bytes, str, WLADM_MAX_ESSID_LEN);
- return (WLADM_STATUS_OK);
+ (void) strlcpy(essid->we_bytes, str, DLADM_WLAN_MAX_ESSID_LEN);
+ return (DLADM_STATUS_OK);
}
-wladm_status_t
-wladm_str2bssid(const char *str, wladm_bssid_t *bssid)
+dladm_status_t
+dladm_wlan_str2bssid(const char *str, dladm_wlan_bssid_t *bssid)
{
int len;
uchar_t *buf;
buf = _link_aton(str, &len);
if (buf == NULL)
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
- if (len != WLADM_BSSID_LEN) {
+ if (len != DLADM_WLAN_BSSID_LEN) {
free(buf);
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
}
(void) memcpy(bssid->wb_bytes, buf, len);
free(buf);
- return (WLADM_STATUS_OK);
+ return (DLADM_STATUS_OK);
}
-wladm_status_t
-wladm_str2secmode(const char *str, wladm_secmode_t *secmode)
+dladm_status_t
+dladm_wlan_str2secmode(const char *str, dladm_wlan_secmode_t *secmode)
{
uint_t val;
if (!find_val_by_name(str, secmode_vals, VALCNT(secmode_vals), &val))
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
- *secmode = (wladm_secmode_t)val;
- return (WLADM_STATUS_OK);
+ *secmode = (dladm_wlan_secmode_t)val;
+ return (DLADM_STATUS_OK);
}
-wladm_status_t
-wladm_str2strength(const char *str, wladm_strength_t *strength)
+dladm_status_t
+dladm_wlan_str2strength(const char *str, dladm_wlan_strength_t *strength)
{
uint_t val;
if (!find_val_by_name(str, strength_vals, VALCNT(strength_vals), &val))
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
- *strength = (wladm_strength_t)val;
- return (WLADM_STATUS_OK);
+ *strength = (dladm_wlan_strength_t)val;
+ return (DLADM_STATUS_OK);
}
-wladm_status_t
-wladm_str2mode(const char *str, wladm_mode_t *mode)
+dladm_status_t
+dladm_wlan_str2mode(const char *str, dladm_wlan_mode_t *mode)
{
uint_t val;
if (!find_val_by_name(str, mode_vals, VALCNT(mode_vals), &val))
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
- *mode = (wladm_mode_t)val;
- return (WLADM_STATUS_OK);
+ *mode = (dladm_wlan_mode_t)val;
+ return (DLADM_STATUS_OK);
}
-wladm_status_t
-wladm_str2speed(const char *str, wladm_speed_t *speed)
+dladm_status_t
+dladm_wlan_str2speed(const char *str, dladm_wlan_speed_t *speed)
{
- *speed = (wladm_speed_t)(atof(str) * 2);
- return (WLADM_STATUS_OK);
+ *speed = (dladm_wlan_speed_t)(atof(str) * 2);
+ return (DLADM_STATUS_OK);
}
-wladm_status_t
-wladm_str2auth(const char *str, wladm_auth_t *auth)
+dladm_status_t
+dladm_wlan_str2auth(const char *str, dladm_wlan_auth_t *auth)
{
uint_t val;
if (!find_val_by_name(str, auth_vals, VALCNT(auth_vals), &val))
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
- *auth = (wladm_auth_t)val;
- return (WLADM_STATUS_OK);
+ *auth = (dladm_wlan_auth_t)val;
+ return (DLADM_STATUS_OK);
}
-wladm_status_t
-wladm_str2bsstype(const char *str, wladm_bsstype_t *bsstype)
+dladm_status_t
+dladm_wlan_str2bsstype(const char *str, dladm_wlan_bsstype_t *bsstype)
{
uint_t val;
if (!find_val_by_name(str, bsstype_vals, VALCNT(bsstype_vals), &val))
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
- *bsstype = (wladm_bsstype_t)val;
- return (WLADM_STATUS_OK);
+ *bsstype = (dladm_wlan_bsstype_t)val;
+ return (DLADM_STATUS_OK);
}
-wladm_status_t
-wladm_str2linkstatus(const char *str, wladm_linkstatus_t *linkstatus)
+dladm_status_t
+dladm_wlan_str2linkstatus(const char *str, dladm_wlan_linkstatus_t *linkstatus)
{
uint_t val;
if (!find_val_by_name(str, linkstatus_vals, VALCNT(linkstatus_vals),
&val))
- return (WLADM_STATUS_BADARG);
+ return (DLADM_STATUS_BADARG);
- *linkstatus = (wladm_linkstatus_t)val;
- return (WLADM_STATUS_OK);
+ *linkstatus = (dladm_wlan_linkstatus_t)val;
+ return (DLADM_STATUS_OK);
}
static int
@@ -1556,7 +1530,7 @@ do_get_mode(int fd, wldp_t *gbuf)
return (do_get_ioctl(fd, gbuf, WL_PHY_CONFIG));
}
-static wladm_status_t
+static dladm_status_t
do_get_rate_common(wldp_t *gbuf, char **prop_val, uint_t *val_cnt)
{
wl_rates_t *wrp = (wl_rates_t *)gbuf->wldp_buf;
@@ -1564,65 +1538,65 @@ do_get_rate_common(wldp_t *gbuf, char **prop_val, uint_t *val_cnt)
uint_t i;
if (cnt > *val_cnt)
- return (WLADM_STATUS_TOOSMALL);
+ return (DLADM_STATUS_TOOSMALL);
if (wrp->wl_rates_rates[0] == 0) {
prop_val[0][0] = '\0';
*val_cnt = 1;
- return (WLADM_STATUS_OK);
+ return (DLADM_STATUS_OK);
}
for (i = 0; i < cnt; i++) {
- (void) snprintf(prop_val[i], WLADM_STRSIZE, "%.*f",
+ (void) snprintf(prop_val[i], DLADM_STRSIZE, "%.*f",
wrp->wl_rates_rates[i] % 2,
(float)wrp->wl_rates_rates[i] / 2);
}
*val_cnt = cnt;
- return (WLADM_STATUS_OK);
+ return (DLADM_STATUS_OK);
}
-static wladm_status_t
+static dladm_status_t
do_get_rate_prop(int fd, wldp_t *gbuf, char **prop_val, uint_t *val_cnt)
{
if (do_get_rate(fd, gbuf) < 0)
- return (wladm_wlresult2status(gbuf));
+ return (dladm_wlan_wlresult2status(gbuf));
return (do_get_rate_common(gbuf, prop_val, val_cnt));
}
-static wladm_status_t
+static dladm_status_t
do_get_rate_mod(int fd, wldp_t *gbuf, char **prop_val, uint_t *val_cnt)
{
if (do_get_ioctl(fd, gbuf, WL_SUPPORTED_RATES) < 0)
- return (WLADM_STATUS_FAILED);
+ return (DLADM_STATUS_FAILED);
return (do_get_rate_common(gbuf, prop_val, val_cnt));
}
-static wladm_status_t
+static dladm_status_t
do_get_channel_prop(int fd, wldp_t *gbuf, char **prop_val, uint_t *val_cnt)
{
uint32_t channel;
if (do_get_phyconf(fd, gbuf) < 0)
- return (wladm_wlresult2status(gbuf));
+ return (dladm_wlan_wlresult2status(gbuf));
if (!do_convert_chan((wl_phy_conf_t *)gbuf->wldp_buf, &channel))
- return (WLADM_STATUS_NOTFOUND);
+ return (DLADM_STATUS_NOTFOUND);
- (void) snprintf(*prop_val, WLADM_STRSIZE, "%u", channel);
+ (void) snprintf(*prop_val, DLADM_STRSIZE, "%u", channel);
*val_cnt = 1;
- return (WLADM_STATUS_OK);
+ return (DLADM_STATUS_OK);
}
-static wladm_status_t
+static dladm_status_t
do_get_powermode_prop(int fd, wldp_t *gbuf, char **prop_val, uint_t *val_cnt)
{
wl_ps_mode_t *mode;
const char *s;
if (do_get_powermode(fd, gbuf) < 0)
- return (wladm_wlresult2status(gbuf));
+ return (dladm_wlan_wlresult2status(gbuf));
mode = (wl_ps_mode_t *)(gbuf->wldp_buf);
switch (mode->wl_ps_mode) {
@@ -1636,22 +1610,22 @@ do_get_powermode_prop(int fd, wldp_t *gbuf, char **prop_val, uint_t *val_cnt)
s = "fast";
break;
default:
- return (WLADM_STATUS_NOTFOUND);
+ return (DLADM_STATUS_NOTFOUND);
}
- (void) snprintf(*prop_val, WLADM_STRSIZE, "%s", s);
+ (void) snprintf(*prop_val, DLADM_STRSIZE, "%s", s);
*val_cnt = 1;
- return (WLADM_STATUS_OK);
+ return (DLADM_STATUS_OK);
}
-static wladm_status_t
+static dladm_status_t
do_get_radio_prop(int fd, wldp_t *gbuf, char **prop_val, uint_t *val_cnt)
{
wl_radio_t radio;
const char *s;
if (do_get_radio(fd, gbuf) < 0)
- return (wladm_wlresult2status(gbuf));
+ return (dladm_wlan_wlresult2status(gbuf));
radio = *(wl_radio_t *)(gbuf->wldp_buf);
switch (radio) {
@@ -1662,24 +1636,24 @@ do_get_radio_prop(int fd, wldp_t *gbuf, char **prop_val, uint_t *val_cnt)
s = "off";
break;
default:
- return (WLADM_STATUS_NOTFOUND);
+ return (DLADM_STATUS_NOTFOUND);
}
- (void) snprintf(*prop_val, WLADM_STRSIZE, "%s", s);
+ (void) snprintf(*prop_val, DLADM_STRSIZE, "%s", s);
*val_cnt = 1;
- return (WLADM_STATUS_OK);
+ return (DLADM_STATUS_OK);
}
static int
-do_set_bsstype(int fd, wldp_t *gbuf, wladm_bsstype_t *bsstype)
+do_set_bsstype(int fd, wldp_t *gbuf, dladm_wlan_bsstype_t *bsstype)
{
wl_bss_type_t ibsstype;
switch (*bsstype) {
- case WLADM_BSSTYPE_BSS:
+ case DLADM_WLAN_BSSTYPE_BSS:
ibsstype = WL_BSS_BSS;
break;
- case WLADM_BSSTYPE_IBSS:
+ case DLADM_WLAN_BSSTYPE_IBSS:
ibsstype = WL_BSS_IBSS;
break;
default:
@@ -1691,15 +1665,15 @@ do_set_bsstype(int fd, wldp_t *gbuf, wladm_bsstype_t *bsstype)
}
static int
-do_set_authmode(int fd, wldp_t *gbuf, wladm_auth_t *auth)
+do_set_authmode(int fd, wldp_t *gbuf, dladm_wlan_auth_t *auth)
{
wl_authmode_t auth_mode;
switch (*auth) {
- case WLADM_AUTH_OPEN:
+ case DLADM_WLAN_AUTH_OPEN:
auth_mode = WL_OPENSYSTEM;
break;
- case WLADM_AUTH_SHARED:
+ case DLADM_WLAN_AUTH_SHARED:
auth_mode = WL_SHAREDKEY;
break;
default:
@@ -1710,15 +1684,15 @@ do_set_authmode(int fd, wldp_t *gbuf, wladm_auth_t *auth)
}
static int
-do_set_encryption(int fd, wldp_t *gbuf, wladm_secmode_t *secmode)
+do_set_encryption(int fd, wldp_t *gbuf, dladm_wlan_secmode_t *secmode)
{
wl_encryption_t encryption;
switch (*secmode) {
- case WLADM_SECMODE_NONE:
+ case DLADM_WLAN_SECMODE_NONE:
encryption = WL_NOENCRYPTION;
break;
- case WLADM_SECMODE_WEP:
+ case DLADM_WLAN_SECMODE_WEP:
encryption = WL_ENC_WEP;
break;
default:
@@ -1729,12 +1703,13 @@ do_set_encryption(int fd, wldp_t *gbuf, wladm_secmode_t *secmode)
}
static int
-do_set_wepkey(int fd, wldp_t *gbuf, wladm_wep_key_t *keys, uint_t key_count)
+do_set_wepkey(int fd, wldp_t *gbuf, dladm_wlan_wepkey_t *keys,
+ uint_t key_count)
{
int i;
wl_wep_key_t *wkp;
wl_wep_key_tab_t wepkey_tab;
- wladm_wep_key_t *kp;
+ dladm_wlan_wepkey_t *kp;
if (key_count == 0 || key_count > MAX_NWEPKEYS || keys == NULL)
return (-1);
@@ -1747,8 +1722,8 @@ do_set_wepkey(int fd, wldp_t *gbuf, wladm_wep_key_t *keys, uint_t key_count)
kp = &keys[i];
if (kp->wk_idx == 0 || kp->wk_idx > MAX_NWEPKEYS)
return (-1);
- if (kp->wk_len != WLADM_WEPKEY64_LEN &&
- kp->wk_len != WLADM_WEPKEY128_LEN)
+ if (kp->wk_len != DLADM_WLAN_WEPKEY64_LEN &&
+ kp->wk_len != DLADM_WLAN_WEPKEY128_LEN)
return (-1);
wkp = &wepkey_tab[kp->wk_idx - 1];
@@ -1762,7 +1737,7 @@ do_set_wepkey(int fd, wldp_t *gbuf, wladm_wep_key_t *keys, uint_t key_count)
}
static int
-do_set_essid(int fd, wldp_t *gbuf, wladm_essid_t *essid)
+do_set_essid(int fd, wldp_t *gbuf, dladm_wlan_essid_t *essid)
{
wl_essid_t iessid;
@@ -1779,76 +1754,75 @@ do_set_essid(int fd, wldp_t *gbuf, wladm_essid_t *essid)
}
/* ARGSUSED */
-static wladm_status_t
+static dladm_status_t
do_check_rate(int fd, wldp_t *gbuf, prop_desc_t *pdp, char **prop_val,
uint_t val_cnt, val_desc_t **vdpp)
{
int i;
uint_t modval_cnt = MAX_SUPPORT_RATES;
char *buf, **modval;
- wladm_status_t status;
+ dladm_status_t status;
val_desc_t *vdp = NULL;
if (val_cnt != 1)
- return (WLADM_STATUS_BADVALCNT);
+ return (DLADM_STATUS_BADVALCNT);
- buf = malloc((sizeof (char *) + WLADM_STRSIZE) *
- MAX_SUPPORT_RATES);
+ buf = malloc((sizeof (char *) + DLADM_STRSIZE) * MAX_SUPPORT_RATES);
if (buf == NULL)
goto done;
modval = (char **)(void *)buf;
for (i = 0; i < MAX_SUPPORT_RATES; i++) {
modval[i] = buf + sizeof (char *) * MAX_SUPPORT_RATES +
- i * WLADM_STRSIZE;
+ i * DLADM_STRSIZE;
}
status = do_get_rate_mod(fd, gbuf, modval, &modval_cnt);
- if (status != WLADM_STATUS_OK)
+ if (status != DLADM_STATUS_OK)
goto done;
vdp = malloc(sizeof (val_desc_t));
if (vdp == NULL) {
- status = WLADM_STATUS_NOMEM;
+ status = DLADM_STATUS_NOMEM;
goto done;
}
for (i = 0; i < modval_cnt; i++) {
if (strcasecmp(*prop_val, modval[i]) == 0) {
vdp->vd_val = (uint_t)(atof(*prop_val) * 2);
- status = WLADM_STATUS_OK;
+ status = DLADM_STATUS_OK;
*vdpp = vdp;
vdp = NULL;
break;
}
}
if (i == modval_cnt)
- status = WLADM_STATUS_BADVAL;
+ status = DLADM_STATUS_BADVAL;
done:
free(buf);
free(vdp);
return (status);
}
-static wladm_status_t
+static dladm_status_t
do_set_rate_prop(int fd, wldp_t *gbuf, val_desc_t *vdp, uint_t val_cnt)
{
- wladm_rates_t rates;
+ dladm_wlan_rates_t rates;
if (val_cnt != 1)
- return (WLADM_STATUS_BADVALCNT);
+ return (DLADM_STATUS_BADVALCNT);
rates.wr_cnt = 1;
rates.wr_rates[0] = vdp[0].vd_val;
if (do_set_rate(fd, gbuf, &rates) < 0)
- return (wladm_wlresult2status(gbuf));
+ return (dladm_wlan_wlresult2status(gbuf));
- return (WLADM_STATUS_OK);
+ return (DLADM_STATUS_OK);
}
static int
-do_set_rate(int fd, wldp_t *gbuf, wladm_rates_t *rates)
+do_set_rate(int fd, wldp_t *gbuf, dladm_wlan_rates_t *rates)
{
int i;
uint_t len;
@@ -1866,32 +1840,32 @@ do_set_rate(int fd, wldp_t *gbuf, wladm_rates_t *rates)
}
/* ARGSUSED */
-static wladm_status_t
+static dladm_status_t
do_set_powermode_prop(int fd, wldp_t *gbuf, val_desc_t *vdp, uint_t val_cnt)
{
- wladm_powermode_t powermode = (wladm_powermode_t)vdp->vd_val;
+ dladm_wlan_powermode_t powermode = (dladm_wlan_powermode_t)vdp->vd_val;
if (do_set_powermode(fd, gbuf, &powermode) < 0)
- return (wladm_wlresult2status(gbuf));
+ return (dladm_wlan_wlresult2status(gbuf));
- return (WLADM_STATUS_OK);
+ return (DLADM_STATUS_OK);
}
static int
-do_set_powermode(int fd, wldp_t *gbuf, wladm_powermode_t *pm)
+do_set_powermode(int fd, wldp_t *gbuf, dladm_wlan_powermode_t *pm)
{
wl_ps_mode_t ps_mode;
(void) memset(&ps_mode, 0xff, sizeof (ps_mode));
switch (*pm) {
- case WLADM_PM_OFF:
+ case DLADM_WLAN_PM_OFF:
ps_mode.wl_ps_mode = WL_PM_AM;
break;
- case WLADM_PM_MAX:
+ case DLADM_WLAN_PM_MAX:
ps_mode.wl_ps_mode = WL_PM_MPS;
break;
- case WLADM_PM_FAST:
+ case DLADM_WLAN_PM_FAST:
ps_mode.wl_ps_mode = WL_PM_FAST;
break;
default:
@@ -1902,27 +1876,27 @@ do_set_powermode(int fd, wldp_t *gbuf, wladm_powermode_t *pm)
}
/* ARGSUSED */
-static wladm_status_t
+static dladm_status_t
do_set_radio_prop(int fd, wldp_t *gbuf, val_desc_t *vdp, uint_t val_cnt)
{
- wladm_radio_t radio = (wladm_radio_t)vdp->vd_val;
+ dladm_wlan_radio_t radio = (dladm_wlan_radio_t)vdp->vd_val;
if (do_set_radio(fd, gbuf, &radio) < 0)
- return (wladm_wlresult2status(gbuf));
+ return (dladm_wlan_wlresult2status(gbuf));
- return (WLADM_STATUS_OK);
+ return (DLADM_STATUS_OK);
}
static int
-do_set_radio(int fd, wldp_t *gbuf, wladm_radio_t *radio)
+do_set_radio(int fd, wldp_t *gbuf, dladm_wlan_radio_t *radio)
{
wl_radio_t r;
switch (*radio) {
- case WLADM_RADIO_ON:
+ case DLADM_WLAN_RADIO_ON:
r = B_TRUE;
break;
- case WLADM_RADIO_OFF:
+ case DLADM_WLAN_RADIO_OFF:
r = B_FALSE;
break;
default:
@@ -1932,7 +1906,7 @@ do_set_radio(int fd, wldp_t *gbuf, wladm_radio_t *radio)
}
static int
-do_set_channel(int fd, wldp_t *gbuf, wladm_channel_t *channel)
+do_set_channel(int fd, wldp_t *gbuf, dladm_wlan_channel_t *channel)
{
wl_phy_conf_t phy_conf;
@@ -1955,8 +1929,9 @@ do_set_createibss(int fd, wldp_t *gbuf, boolean_t *create_ibss)
}
static void
-generate_essid(wladm_essid_t *essid)
+generate_essid(dladm_wlan_essid_t *essid)
{
srandom(gethrtime());
- (void) snprintf(essid->we_bytes, WLADM_MAX_ESSID_LEN, "%d", random());
+ (void) snprintf(essid->we_bytes, DLADM_WLAN_MAX_ESSID_LEN, "%d",
+ random());
}
diff --git a/usr/src/lib/libdladm/common/libdlwlan.h b/usr/src/lib/libdladm/common/libdlwlan.h
new file mode 100644
index 0000000000..ccb2e7fc22
--- /dev/null
+++ b/usr/src/lib/libdladm/common/libdlwlan.h
@@ -0,0 +1,202 @@
+/*
+ * 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 2007 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _LIBDLWLAN_H
+#define _LIBDLWLAN_H
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+/*
+ * This file includes structures, macros and routines used by WLAN link
+ * administration.
+ */
+
+#include <sys/types.h>
+#include <libdladm.h>
+
+/*
+ * General libdlwlan definitions and functions.
+ *
+ * These interfaces are ON consolidation-private.
+ * For documentation, refer to PSARC/2006/623.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define DLADM_WLAN_MAX_ESSID_LEN 32 /* per 802.11 spec */
+#define DLADM_WLAN_BSSID_LEN 6 /* per 802.11 spec */
+
+#define DLADM_WLAN_CONNECT_TIMEOUT_DEFAULT 10
+#define DLADM_WLAN_CONNECT_CREATEIBSS 0x00000001
+#define DLADM_WLAN_CONNECT_NOSCAN 0x00000002
+
+typedef struct dladm_wlan_essid {
+ char we_bytes[DLADM_WLAN_MAX_ESSID_LEN];
+} dladm_wlan_essid_t;
+
+typedef struct dladm_wlan_bssid {
+ uint8_t wb_bytes[DLADM_WLAN_BSSID_LEN];
+} dladm_wlan_bssid_t;
+
+typedef enum {
+ DLADM_WLAN_SECMODE_NONE = 1,
+ DLADM_WLAN_SECMODE_WEP
+} dladm_wlan_secmode_t;
+
+typedef enum {
+ DLADM_WLAN_STRENGTH_VERY_WEAK = 1,
+ DLADM_WLAN_STRENGTH_WEAK,
+ DLADM_WLAN_STRENGTH_GOOD,
+ DLADM_WLAN_STRENGTH_VERY_GOOD,
+ DLADM_WLAN_STRENGTH_EXCELLENT
+} dladm_wlan_strength_t;
+
+typedef enum {
+ DLADM_WLAN_MODE_NONE = 0,
+ DLADM_WLAN_MODE_80211A,
+ DLADM_WLAN_MODE_80211B,
+ DLADM_WLAN_MODE_80211G
+} dladm_wlan_mode_t;
+
+typedef enum {
+ DLADM_WLAN_AUTH_OPEN = 1,
+ DLADM_WLAN_AUTH_SHARED
+} dladm_wlan_auth_t;
+
+typedef enum {
+ DLADM_WLAN_BSSTYPE_BSS = 1,
+ DLADM_WLAN_BSSTYPE_IBSS,
+ DLADM_WLAN_BSSTYPE_ANY
+} dladm_wlan_bsstype_t;
+
+typedef enum {
+ DLADM_WLAN_LINKSTATUS_DISCONNECTED = 1,
+ DLADM_WLAN_LINKSTATUS_CONNECTED
+} dladm_wlan_linkstatus_t;
+
+typedef uint32_t dladm_wlan_speed_t;
+typedef uint32_t dladm_wlan_channel_t;
+
+enum {
+ DLADM_WLAN_ATTR_ESSID = 0x00000001,
+ DLADM_WLAN_ATTR_BSSID = 0x00000002,
+ DLADM_WLAN_ATTR_SECMODE = 0x00000004,
+ DLADM_WLAN_ATTR_STRENGTH = 0x00000008,
+ DLADM_WLAN_ATTR_MODE = 0x00000010,
+ DLADM_WLAN_ATTR_SPEED = 0x00000020,
+ DLADM_WLAN_ATTR_AUTH = 0x00000040,
+ DLADM_WLAN_ATTR_BSSTYPE = 0x00000080,
+ DLADM_WLAN_ATTR_CHANNEL = 0x00000100
+};
+typedef struct dladm_wlan_attr {
+ uint_t wa_valid;
+ dladm_wlan_essid_t wa_essid;
+ dladm_wlan_bssid_t wa_bssid;
+ dladm_wlan_secmode_t wa_secmode;
+ dladm_wlan_strength_t wa_strength;
+ dladm_wlan_mode_t wa_mode;
+ dladm_wlan_speed_t wa_speed;
+ dladm_wlan_auth_t wa_auth;
+ dladm_wlan_bsstype_t wa_bsstype;
+ dladm_wlan_channel_t wa_channel;
+} dladm_wlan_attr_t;
+
+enum {
+ DLADM_WLAN_LINKATTR_STATUS = 0x00000001,
+ DLADM_WLAN_LINKATTR_WLAN = 0x00000002
+};
+typedef struct dladm_wlan_linkattr {
+ uint_t la_valid;
+ dladm_wlan_linkstatus_t la_status;
+ dladm_wlan_attr_t la_wlan_attr;
+} dladm_wlan_linkattr_t;
+
+#define DLADM_WLAN_WEPKEY64_LEN 5 /* per WEP spec */
+#define DLADM_WLAN_WEPKEY128_LEN 13 /* per WEP spec */
+#define DLADM_WLAN_MAX_WEPKEY_LEN 13 /* per WEP spec */
+#define DLADM_WLAN_MAX_WEPKEYS 4 /* MAX_NWEPKEYS */
+#define DLADM_WLAN_MAX_WEPKEYNAME_LEN 64
+typedef struct dladm_wlan_wepkey {
+ uint_t wk_idx;
+ uint_t wk_len;
+ uint8_t wk_val[DLADM_WLAN_MAX_WEPKEY_LEN];
+ char wk_name[DLADM_WLAN_MAX_WEPKEYNAME_LEN];
+} dladm_wlan_wepkey_t;
+
+extern dladm_status_t dladm_wlan_scan(const char *, void *,
+ boolean_t (*)(void *, dladm_wlan_attr_t *));
+extern dladm_status_t dladm_wlan_connect(const char *, dladm_wlan_attr_t *,
+ int, void *, uint_t, uint_t);
+extern dladm_status_t dladm_wlan_disconnect(const char *);
+extern dladm_status_t dladm_wlan_get_linkattr(const char *,
+ dladm_wlan_linkattr_t *);
+extern dladm_status_t dladm_wlan_walk(void *,
+ boolean_t (*)(void *, const char *));
+extern boolean_t dladm_wlan_is_valid(const char *);
+extern dladm_status_t dladm_wlan_set_prop(const char *, const char *,
+ char **, uint_t, char **);
+extern dladm_status_t dladm_wlan_walk_prop(const char *, void *,
+ boolean_t (*)(void *, const char *));
+extern dladm_status_t dladm_wlan_get_prop(const char *, dladm_prop_type_t,
+ const char *, char **, uint_t *);
+
+extern const char *dladm_wlan_essid2str(dladm_wlan_essid_t *, char *);
+extern const char *dladm_wlan_bssid2str(dladm_wlan_bssid_t *, char *);
+extern const char *dladm_wlan_secmode2str(dladm_wlan_secmode_t *, char *);
+extern const char *dladm_wlan_strength2str(dladm_wlan_strength_t *,
+ char *);
+extern const char *dladm_wlan_mode2str(dladm_wlan_mode_t *, char *);
+extern const char *dladm_wlan_speed2str(dladm_wlan_speed_t *, char *);
+extern const char *dladm_wlan_auth2str(dladm_wlan_auth_t *, char *);
+extern const char *dladm_wlan_bsstype2str(dladm_wlan_bsstype_t *, char *);
+extern const char *dladm_wlan_linkstatus2str(dladm_wlan_linkstatus_t *,
+ char *);
+
+extern dladm_status_t dladm_wlan_str2essid(const char *,
+ dladm_wlan_essid_t *);
+extern dladm_status_t dladm_wlan_str2bssid(const char *,
+ dladm_wlan_bssid_t *);
+extern dladm_status_t dladm_wlan_str2secmode(const char *,
+ dladm_wlan_secmode_t *);
+extern dladm_status_t dladm_wlan_str2strength(const char *,
+ dladm_wlan_strength_t *);
+extern dladm_status_t dladm_wlan_str2mode(const char *,
+ dladm_wlan_mode_t *);
+extern dladm_status_t dladm_wlan_str2speed(const char *,
+ dladm_wlan_speed_t *);
+extern dladm_status_t dladm_wlan_str2auth(const char *,
+ dladm_wlan_auth_t *);
+extern dladm_status_t dladm_wlan_str2bsstype(const char *,
+ dladm_wlan_bsstype_t *);
+extern dladm_status_t dladm_wlan_str2linkstatus(const char *,
+ dladm_wlan_linkstatus_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LIBDLWLAN_H */
diff --git a/usr/src/lib/libwladm/common/libwladm_impl.h b/usr/src/lib/libdladm/common/libdlwlan_impl.h
index a20942a61c..764a951bed 100644
--- a/usr/src/lib/libwladm/common/libwladm_impl.h
+++ b/usr/src/lib/libdladm/common/libdlwlan_impl.h
@@ -19,12 +19,12 @@
* CDDL HEADER END
*/
/*
- * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
-#ifndef _LIBWLADM_IMPL_H
-#define _LIBWLADM_IMPL_H
+#ifndef _LIBDLWLAN_IMPL_H
+#define _LIBDLWLAN_IMPL_H
#pragma ident "%Z%%M% %I% %E% SMI"
@@ -44,39 +44,40 @@ extern "C" {
* 5 strengths but 16 values, by convention the "middle" strength gets the
* extra value. Thus, the buckets are 0-2, 3-5, 6-9, 10-12, and 13-15.
*/
-#define WLADM_SIGNAL2STRENGTH(signal) \
- (((signal) > 12 ? WLADM_STRENGTH_EXCELLENT : \
- ((signal) > 9 ? WLADM_STRENGTH_VERY_GOOD : \
- ((signal) > 5 ? WLADM_STRENGTH_GOOD : \
- ((signal) > 2 ? WLADM_STRENGTH_WEAK : WLADM_STRENGTH_VERY_WEAK)))))
+#define DLADM_WLAN_SIGNAL2STRENGTH(signal) \
+ (((signal) > 12 ? DLADM_WLAN_STRENGTH_EXCELLENT : \
+ ((signal) > 9 ? DLADM_WLAN_STRENGTH_VERY_GOOD : \
+ ((signal) > 5 ? DLADM_WLAN_STRENGTH_GOOD : \
+ ((signal) > 2 ? DLADM_WLAN_STRENGTH_WEAK : \
+ DLADM_WLAN_STRENGTH_VERY_WEAK)))))
/*
* Convert between an OFDM MHz and a channel number.
*/
-#define WLADM_OFDM2CHAN(mhz) (((mhz) - 5000) / 5)
+#define DLADM_WLAN_OFDM2CHAN(mhz) (((mhz) - 5000) / 5)
-#define WLADM_CONNECT_POLLRATE 200 /* milliseconds */
-#define WLADM_CONNECT_DEFAULT_CHANNEL 1
+#define DLADM_WLAN_CONNECT_POLLRATE 200 /* milliseconds */
+#define DLADM_WLAN_CONNECT_DEFAULT_CHANNEL 1
-#define WLADM_MAX_RATES 4
-typedef struct wladm_rates {
- uint8_t wr_rates[WLADM_MAX_RATES];
+#define DLADM_WLAN_MAX_RATES 4
+typedef struct dladm_wlan_rates {
+ uint8_t wr_rates[DLADM_WLAN_MAX_RATES];
int wr_cnt;
-} wladm_rates_t;
+} dladm_wlan_rates_t;
typedef enum {
- WLADM_RADIO_ON = 1,
- WLADM_RADIO_OFF
-} wladm_radio_t;
+ DLADM_WLAN_RADIO_ON = 1,
+ DLADM_WLAN_RADIO_OFF
+} dladm_wlan_radio_t;
typedef enum {
- WLADM_PM_OFF = 1,
- WLADM_PM_MAX,
- WLADM_PM_FAST
-} wladm_powermode_t;
+ DLADM_WLAN_PM_OFF = 1,
+ DLADM_WLAN_PM_MAX,
+ DLADM_WLAN_PM_FAST
+} dladm_wlan_powermode_t;
#ifdef __cplusplus
}
#endif
-#endif /* _LIBWLADM_IMPL_H */
+#endif /* _LIBDLWLAN_IMPL_H */
diff --git a/usr/src/lib/libdladm/common/linkprop.c b/usr/src/lib/libdladm/common/linkprop.c
index e3b9ed386f..67b9f5e16c 100644
--- a/usr/src/lib/libdladm/common/linkprop.c
+++ b/usr/src/lib/libdladm/common/linkprop.c
@@ -37,9 +37,9 @@
#include <unistd.h>
#include <libdevinfo.h>
#include <zone.h>
-#include <libwladm.h>
+#include <libdllink.h>
#include <libdladm_impl.h>
-
+#include <libdlwlan.h>
#include <dlfcn.h>
#include <link.h>
@@ -90,45 +90,6 @@ static prop_desc_t prop_table[] = {
#define MAX_PROPS (sizeof (prop_table) / sizeof (prop_desc_t))
-/*
- * Convert a wladm_status_t to a dladm_status_t. This is used by wrappers
- * to libwladm routines (e.g. dladm_set_prop()). Note that the mapping is
- * not 1-1; whenever possible we try to look for an error code with a
- * similar meaning. Error codes with no suitable counterpart in libdladm
- * will be mapped to DLADM_STATUS_FAILED. Clients who require clearer error
- * reporting should use libwladm directly.
- */
-static dladm_status_t
-dladm_wladmstatus2status(wladm_status_t wstatus)
-{
- switch (wstatus) {
- case WLADM_STATUS_OK:
- return (DLADM_STATUS_OK);
- case WLADM_STATUS_FAILED:
- return (DLADM_STATUS_FAILED);
- case WLADM_STATUS_NOTSUP:
- return (DLADM_STATUS_NOTSUP);
- case WLADM_STATUS_BADARG:
- return (DLADM_STATUS_BADARG);
- case WLADM_STATUS_NOTFOUND:
- return (DLADM_STATUS_NOTFOUND);
- case WLADM_STATUS_BADVAL:
- return (DLADM_STATUS_BADVAL);
- case WLADM_STATUS_LINKINVAL:
- return (DLADM_STATUS_LINKINVAL);
- case WLADM_STATUS_NOMEM:
- return (DLADM_STATUS_NOMEM);
- case WLADM_STATUS_PROPRDONLY:
- return (DLADM_STATUS_PROPRDONLY);
- case WLADM_STATUS_TOOSMALL:
- return (DLADM_STATUS_TOOSMALL);
- case WLADM_STATUS_BADVALCNT:
- return (DLADM_STATUS_BADVALCNT);
- default:
- return (DLADM_STATUS_FAILED);
- }
-}
-
dladm_status_t
dladm_set_prop(const char *link, const char *prop_name, char **prop_val,
uint_t val_cnt, uint_t flags, char **errprop)
@@ -148,10 +109,9 @@ dladm_set_prop(const char *link, const char *prop_name, char **prop_val,
if (status == DLADM_STATUS_NOTFOUND) {
status = DLADM_STATUS_BADARG;
- if (wladm_is_valid(link)) {
- status = dladm_wladmstatus2status(
- wladm_set_prop(link, prop_name,
- prop_val, val_cnt, errprop));
+ if (dladm_wlan_is_valid(link)) {
+ status = dladm_wlan_set_prop(link, prop_name,
+ prop_val, val_cnt, errprop);
}
}
if (status != DLADM_STATUS_OK)
@@ -177,11 +137,10 @@ dladm_walk_prop(const char *link, void *arg,
return (DLADM_STATUS_BADARG);
/* For wifi links, show wifi properties first */
- if (wladm_is_valid(link)) {
+ if (dladm_wlan_is_valid(link)) {
dladm_status_t status;
- status = dladm_wladmstatus2status(
- wladm_walk_prop(link, arg, func));
+ status = dladm_wlan_walk_prop(link, arg, func);
if (status != DLADM_STATUS_OK)
return (status);
}
@@ -205,6 +164,8 @@ dladm_get_prop(const char *link, dladm_prop_type_t type,
return (DLADM_STATUS_BADARG);
if (type == DLADM_PROP_VAL_PERSISTENT) {
+ if (i_dladm_is_prop_temponly(prop_name, NULL))
+ return (DLADM_STATUS_TEMPONLY);
return (i_dladm_get_prop_db(link, prop_name,
prop_val, val_cntp));
}
@@ -214,26 +175,9 @@ dladm_get_prop(const char *link, dladm_prop_type_t type,
if (status != DLADM_STATUS_NOTFOUND)
return (status);
- if (wladm_is_valid(link)) {
- wladm_prop_type_t wtype;
-
- switch (type) {
- case DLADM_PROP_VAL_CURRENT:
- wtype = WLADM_PROP_VAL_CURRENT;
- break;
- case DLADM_PROP_VAL_DEFAULT:
- wtype = WLADM_PROP_VAL_DEFAULT;
- break;
- case DLADM_PROP_VAL_MODIFIABLE:
- wtype = WLADM_PROP_VAL_MODIFIABLE;
- break;
- default:
- return (DLADM_STATUS_BADARG);
- }
-
- return (dladm_wladmstatus2status(
- wladm_get_prop(link, wtype, prop_name,
- prop_val, val_cntp)));
+ if (dladm_wlan_is_valid(link)) {
+ return (dladm_wlan_get_prop(link, type, prop_name,
+ prop_val, val_cntp));
}
return (DLADM_STATUS_BADARG);
}
@@ -1195,9 +1139,3 @@ i_dladm_is_prop_temponly(const char *prop_name, char **errprop)
return (B_FALSE);
}
-
-boolean_t
-dladm_is_prop_temponly(const char *prop_name, char **errprop)
-{
- return (i_dladm_is_prop_temponly(prop_name, errprop));
-}
diff --git a/usr/src/lib/libdladm/common/llib-ldladm b/usr/src/lib/libdladm/common/llib-ldladm
index 40f4738a9a..b8b9a1e4f8 100644
--- a/usr/src/lib/libdladm/common/llib-ldladm
+++ b/usr/src/lib/libdladm/common/llib-ldladm
@@ -2,9 +2,8 @@
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
+ * 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.
@@ -20,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -29,4 +28,6 @@
/*LINTLIBRARY*/
/*PROTOLIB1*/
-#include <libdladm.h>
+#include <libdllink.h>
+#include <libdlaggr.h>
+#include <libdlwlan.h>
diff --git a/usr/src/lib/libdladm/common/mapfile-vers b/usr/src/lib/libdladm/common/mapfile-vers
index 34d1e2c6b2..57c0999585 100644
--- a/usr/src/lib/libdladm/common/mapfile-vers
+++ b/usr/src/lib/libdladm/common/mapfile-vers
@@ -29,24 +29,69 @@ SUNWprivate_1.1 {
global:
dladm_info;
dladm_walk;
- dladm_walk_vlan;
+ dladm_hold_link;
+ dladm_rele_link;
+ dladm_status2str;
+ dladm_linkstate2str;
+ dladm_linkduplex2str;
+ dladm_set_rootdir;
+ dladm_mac_walk;
+ dladm_init_linkprop;
dladm_get_prop;
dladm_set_prop;
dladm_walk_prop;
- dladm_is_prop_temponly;
+ dladm_init_secobj;
dladm_get_secobj;
dladm_set_secobj;
dladm_unset_secobj;
dladm_walk_secobj;
- dladm_status2str;
dladm_secobjclass2str;
dladm_str2secobjclass;
- dladm_init_linkprop;
- dladm_init_secobj;
- dladm_set_rootdir;
+ dladm_aggr_walk;
+ dladm_aggr_up;
+ dladm_aggr_down;
+ dladm_aggr_add;
+ dladm_aggr_create;
+ dladm_aggr_delete;
+ dladm_aggr_modify;
+ dladm_aggr_remove;
+ dladm_aggr_lacpmode2str;
+ dladm_aggr_lacptimer2str;
+ dladm_aggr_macaddr2str;
+ dladm_aggr_policy2str;
+ dladm_aggr_portstate2str;
+ dladm_aggr_str2lacpmode;
+ dladm_aggr_str2lacptimer;
+ dladm_aggr_str2macaddr;
+ dladm_aggr_str2policy;
+ dladm_wlan_walk;
+ dladm_wlan_scan;
+ dladm_wlan_connect;
+ dladm_wlan_disconnect;
+ dladm_wlan_get_linkattr;
+ dladm_wlan_is_valid;
+ dladm_wlan_set_prop;
+ dladm_wlan_walk_prop;
+ dladm_wlan_get_prop;
+ dladm_wlan_essid2str;
+ dladm_wlan_bssid2str;
+ dladm_wlan_secmode2str;
+ dladm_wlan_strength2str;
+ dladm_wlan_mode2str;
+ dladm_wlan_speed2str;
+ dladm_wlan_auth2str;
+ dladm_wlan_bsstype2str;
+ dladm_wlan_linkstatus2str;
+ dladm_wlan_str2essid;
+ dladm_wlan_str2bssid;
+ dladm_wlan_str2secmode;
+ dladm_wlan_str2strength;
+ dladm_wlan_str2mode;
+ dladm_wlan_str2speed;
+ dladm_wlan_str2auth;
+ dladm_wlan_str2bsstype;
+ dladm_wlan_str2linkstatus;
- dladm_hold_link;
- dladm_rele_link;
local:
*;
};
diff --git a/usr/src/lib/libdladm/common/secobj.c b/usr/src/lib/libdladm/common/secobj.c
index 3f122ca347..5deb1590dc 100644
--- a/usr/src/lib/libdladm/common/secobj.c
+++ b/usr/src/lib/libdladm/common/secobj.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -34,6 +34,7 @@
#include <sys/stat.h>
#include <sys/dld.h>
#include <libinetutil.h>
+#include <libdllink.h>
#include <libdladm_impl.h>
static dladm_status_t i_dladm_set_secobj_db(const char *,
diff --git a/usr/src/lib/liblaadm/Makefile b/usr/src/lib/liblaadm/Makefile
deleted file mode 100644
index aad578c055..0000000000
--- a/usr/src/lib/liblaadm/Makefile
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# 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 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-include $(SRC)/lib/Makefile.lib
-
-HDRS = liblaadm.h
-HDRDIR = common
-
-SUBDIRS = $(MACH)
-
-POFILE = liblaadm.po
-MSGFILES = common/liblaadm.c
-
-all := TARGET = all
-clean := TARGET = clean
-clobber := TARGET = clobber
-install := TARGET = install
-lint := TARGET = lint
-
-.KEEP_STATE:
-
-all clean clobber install lint: $(SUBDIRS)
-
-install_h: $(ROOTHDRS)
-
-check: $(CHECKHDRS)
-
-$(POFILE): pofile_MSGFILES
-
-_msg: $(MSGDOMAINPOFILE)
-
-$(SUBDIRS): FRC
- @cd $@; pwd; $(MAKE) $(TARGET)
-
-FRC:
-
-include $(SRC)/Makefile.msg.targ
-include $(SRC)/lib/Makefile.targ
diff --git a/usr/src/lib/liblaadm/Makefile.com b/usr/src/lib/liblaadm/Makefile.com
deleted file mode 100644
index 45b019e06e..0000000000
--- a/usr/src/lib/liblaadm/Makefile.com
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# 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 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-LIBRARY = liblaadm.a
-VERS = .1
-OBJECTS = liblaadm.o
-
-include ../../Makefile.lib
-
-# install this library in the root filesystem
-include ../../Makefile.rootfs
-
-LIBS = $(DYNLIB) $(LINTLIB)
-
-LDLIBS += -lsocket -lc
-
-SRCDIR = ../common
-$(LINTLIB) := SRCS = $(SRCDIR)/$(LINTSRC)
-
-CFLAGS += $(CCVERBOSE)
-CPPFLAGS += -I$(SRCDIR) -D_REENTRANT
-
-.KEEP_STATE:
-
-all: $(LIBS)
-
-lint: lintcheck
-
-include $(SRC)/lib/Makefile.targ
diff --git a/usr/src/lib/liblaadm/common/liblaadm.h b/usr/src/lib/liblaadm/common/liblaadm.h
deleted file mode 100644
index 009c307c7f..0000000000
--- a/usr/src/lib/liblaadm/common/liblaadm.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * 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 2006 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifndef _LIBLAADM_H
-#define _LIBLAADM_H
-
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-#include <sys/types.h>
-#include <sys/aggr.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Modification flags sent with the LAIOC_MODIFY ioctl
- */
-#define LAADM_MODIFY_POLICY 0x01
-#define LAADM_MODIFY_MAC 0x02
-#define LAADM_MODIFY_LACP_MODE 0x04
-#define LAADM_MODIFY_LACP_TIMER 0x08
-
-#define LAADM_POLICY_STR_LEN 8
-
-typedef struct laadm_port_attr_db {
- char lp_devname[MAXNAMELEN + 1];
-} laadm_port_attr_db_t;
-
-typedef struct laadm_port_attr_sys {
- char lp_devname[MAXNAMELEN + 1];
- uchar_t lp_mac[ETHERADDRL];
- aggr_port_state_t lp_state;
- aggr_lacp_state_t lp_lacp_state;
-} laadm_port_attr_sys_t;
-
-typedef struct laadm_grp_attr_sys {
- uint32_t lg_key;
- uint32_t lg_nports;
- laadm_port_attr_sys_t *lg_ports;
- uint32_t lg_policy;
- uchar_t lg_mac[ETHERADDRL];
- boolean_t lg_mac_fixed;
- aggr_lacp_mode_t lg_lacp_mode;
- aggr_lacp_timer_t lg_lacp_timer;
-} laadm_grp_attr_sys_t;
-
-/*
- * Diagnostic codes. These supplement error messages.
- */
-typedef enum {
- LAADM_DIAG_REPOSITORY_OPENFAIL = 1,
- LAADM_DIAG_REPOSITORY_PARSEFAIL = 2,
- LAADM_DIAG_REPOSITORY_CLOSEFAIL = 3,
- LAADM_DIAG_INVALID_INTFNAME = 4,
- LAADM_DIAG_INVALID_MACADDR = 5,
- LAADM_DIAG_INVALID_KEY = 6
-} laadm_diag_t;
-
-extern int laadm_create(uint32_t, uint32_t, laadm_port_attr_db_t *,
- uint32_t, boolean_t, uchar_t *, aggr_lacp_mode_t, aggr_lacp_timer_t,
- boolean_t, const char *, laadm_diag_t *);
-extern int laadm_delete(uint32_t, boolean_t, const char *,
- laadm_diag_t *);
-extern int laadm_add(uint32_t, uint32_t, laadm_port_attr_db_t *,
- boolean_t, const char *, laadm_diag_t *);
-extern int laadm_remove(uint32_t, uint32_t, laadm_port_attr_db_t *,
- boolean_t, const char *, laadm_diag_t *);
-extern int laadm_modify(uint32_t, uint32_t, uint32_t, boolean_t,
- uchar_t *, aggr_lacp_mode_t, aggr_lacp_timer_t, boolean_t, const char *,
- laadm_diag_t *);
-extern int laadm_up(uint32_t, const char *, laadm_diag_t *);
-extern int laadm_down(uint32_t);
-
-extern boolean_t laadm_str_to_policy(const char *, uint32_t *);
-extern char *laadm_policy_to_str(uint32_t, char *buf);
-extern boolean_t laadm_str_to_mac_addr(const char *, boolean_t *, uchar_t *);
-extern const char *laadm_mac_addr_to_str(unsigned char *, char *);
-
-extern boolean_t laadm_str_to_lacp_mode(const char *, aggr_lacp_mode_t *);
-extern const char *laadm_lacp_mode_to_str(aggr_lacp_mode_t);
-extern boolean_t laadm_str_to_lacp_timer(const char *, aggr_lacp_timer_t *);
-extern const char *laadm_lacp_timer_to_str(aggr_lacp_timer_t);
-
-extern int laadm_walk_sys(int (*)(void *, laadm_grp_attr_sys_t *), void *);
-extern const char *laadm_diag(laadm_diag_t);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _LIBLAADM_H */
diff --git a/usr/src/lib/liblaadm/common/llib-llaadm b/usr/src/lib/liblaadm/common/llib-llaadm
deleted file mode 100644
index 89c81d1dfe..0000000000
--- a/usr/src/lib/liblaadm/common/llib-llaadm
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (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 2005 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-/*LINTLIBRARY*/
-/*PROTOLIB1*/
-
-#include <liblaadm.h>
diff --git a/usr/src/lib/liblaadm/common/mapfile-vers b/usr/src/lib/liblaadm/common/mapfile-vers
deleted file mode 100644
index 41f5be656b..0000000000
--- a/usr/src/lib/liblaadm/common/mapfile-vers
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# 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 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-SUNWprivate_1.1 {
- global:
- laadm_add;
- laadm_create;
- laadm_delete;
- laadm_diag;
- laadm_down;
- laadm_lacp_mode_to_str;
- laadm_lacp_timer_to_str;
- laadm_mac_addr_to_str;
- laadm_modify;
- laadm_policy_to_str;
- laadm_remove;
- laadm_str_to_lacp_mode;
- laadm_str_to_lacp_timer;
- laadm_str_to_mac_addr;
- laadm_str_to_policy;
- laadm_up;
- laadm_walk_sys;
- local:
- *;
-};
diff --git a/usr/src/lib/liblaadm/i386/Makefile b/usr/src/lib/liblaadm/i386/Makefile
deleted file mode 100644
index 7eae19fff7..0000000000
--- a/usr/src/lib/liblaadm/i386/Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (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 2005 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-#pragma ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS) $(ROOTLINT)
diff --git a/usr/src/lib/liblaadm/sparc/Makefile b/usr/src/lib/liblaadm/sparc/Makefile
deleted file mode 100644
index 7eae19fff7..0000000000
--- a/usr/src/lib/liblaadm/sparc/Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (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 2005 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-#pragma ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS) $(ROOTLINT)
diff --git a/usr/src/lib/libmacadm/Makefile b/usr/src/lib/libmacadm/Makefile
deleted file mode 100644
index 2858be8fdc..0000000000
--- a/usr/src/lib/libmacadm/Makefile
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# 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 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-include $(SRC)/lib/Makefile.lib
-
-HDRS = libmacadm.h
-HDRDIR = common
-
-SUBDIRS = $(MACH)
-
-POFILE = libmacadm.po
-MSGFILES = common/libmacadm.c
-
-all := TARGET = all
-clean := TARGET = clean
-clobber := TARGET = clobber
-install := TARGET = install
-lint := TARGET = lint
-
-.KEEP_STATE:
-
-all clean clobber install lint: $(SUBDIRS)
-
-install_h: $(ROOTHDRS)
-
-check: $(CHECKHDRS)
-
-$(POFILE): pofile_MSGFILES
-
-_msg: $(MSGDOMAINPOFILE)
-
-$(SUBDIRS): FRC
- @cd $@; pwd; $(MAKE) $(TARGET)
-
-FRC:
-
-include $(SRC)/Makefile.msg.targ
-include $(SRC)/lib/Makefile.targ
diff --git a/usr/src/lib/libmacadm/Makefile.com b/usr/src/lib/libmacadm/Makefile.com
deleted file mode 100644
index a6fb192048..0000000000
--- a/usr/src/lib/libmacadm/Makefile.com
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# 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 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-LIBRARY = libmacadm.a
-VERS = .1
-OBJECTS = libmacadm.o
-
-include ../../Makefile.lib
-
-# install this library in the root filesystem
-include ../../Makefile.rootfs
-
-LIBS = $(DYNLIB) $(LINTLIB)
-
-LDLIBS += -ldevinfo -lc
-
-SRCDIR = ../common
-$(LINTLIB) := SRCS = $(SRCDIR)/$(LINTSRC)
-
-CFLAGS += $(CCVERBOSE)
-CPPFLAGS += -I$(SRCDIR) -D_REENTRANT
-
-.KEEP_STATE:
-
-all: $(LIBS) fnamecheck
-
-lint: lintcheck
-
-include $(SRC)/lib/Makefile.targ
diff --git a/usr/src/lib/libmacadm/common/libmacadm.c b/usr/src/lib/libmacadm/common/libmacadm.c
deleted file mode 100644
index 9e6061099d..0000000000
--- a/usr/src/lib/libmacadm/common/libmacadm.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (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 2005 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stropts.h>
-#include <sys/dld.h>
-#include <libdevinfo.h>
-
-#define _KERNEL
-#include <sys/sysmacros.h>
-#undef _KERNEL
-
-/*
- * MAC Administration Library.
- *
- * This library is used by administration tools such as dladm(1M) to
- * iterate through the list of MAC interfaces
- *
- */
-
-typedef struct macadm_dev {
- char md_name[MAXNAMELEN];
- struct macadm_dev *md_next;
-} macadm_dev_t;
-
-typedef struct macadm_walk {
- macadm_dev_t *mw_dev_list;
-} macadm_walk_t;
-
-/*
- * Local callback invoked for each DDI_NT_NET node.
- */
-/* ARGSUSED */
-static int
-i_macadm_apply(di_node_t node, di_minor_t minor, void *arg)
-{
- macadm_walk_t *mwp = arg;
- macadm_dev_t *mdp = mwp->mw_dev_list;
- macadm_dev_t **lastp = &mwp->mw_dev_list;
- char dev[MAXNAMELEN];
-
- (void) snprintf(dev, MAXNAMELEN, "%s%d",
- di_driver_name(node), di_instance(node));
-
- /*
- * Skip aggregations.
- */
- if (strcmp("aggr", di_driver_name(node)) == 0)
- return (DI_WALK_CONTINUE);
-
- while (mdp) {
- /*
- * Skip duplicates.
- */
- if (strcmp(mdp->md_name, dev) == 0)
- return (DI_WALK_CONTINUE);
-
- lastp = &mdp->md_next;
- mdp = mdp->md_next;
- }
-
- if ((mdp = malloc(sizeof (*mdp))) == NULL)
- return (DI_WALK_CONTINUE);
-
- (void) strlcpy(mdp->md_name, dev, MAXNAMELEN);
- mdp->md_next = NULL;
- *lastp = mdp;
-
- return (DI_WALK_CONTINUE);
-}
-
-/*
- * Invoke the specified callback for each DDI_NT_MAC node.
- */
-int
-macadm_walk(void (*fn)(void *, const char *), void *arg,
- boolean_t use_cache)
-{
- di_node_t root;
- macadm_walk_t mw;
- macadm_dev_t *mdp;
- uint_t flags;
-
- if (use_cache) {
- flags = DINFOCACHE;
- } else {
- flags = DINFOSUBTREE | DINFOMINOR | DINFOPROP | DINFOFORCE;
- }
-
- if ((root = di_init("/", flags)) == DI_NODE_NIL) {
- return (-1);
- }
- mw.mw_dev_list = NULL;
-
- (void) di_walk_minor(root, DDI_NT_NET, DI_CHECK_ALIAS, &mw,
- i_macadm_apply);
-
- di_fini(root);
-
- mdp = mw.mw_dev_list;
- while (mdp) {
- (*fn)(arg, mdp->md_name);
- mdp = mdp->md_next;
- }
-
- return (0);
-}
diff --git a/usr/src/lib/libmacadm/common/libmacadm.h b/usr/src/lib/libmacadm/common/libmacadm.h
deleted file mode 100644
index 2f21b53d55..0000000000
--- a/usr/src/lib/libmacadm/common/libmacadm.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (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 2005 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifndef _LIBMACADM_H
-#define _LIBMACADM_H
-
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-#include <sys/types.h>
-#include <sys/mac.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern int macadm_walk(void (*)(void *, const char *),
- void *, boolean_t);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _LIBMACADM_H */
diff --git a/usr/src/lib/libmacadm/common/llib-lmacadm b/usr/src/lib/libmacadm/common/llib-lmacadm
deleted file mode 100644
index ab38ea1ac2..0000000000
--- a/usr/src/lib/libmacadm/common/llib-lmacadm
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (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 2005 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-/*LINTLIBRARY*/
-/*PROTOLIB1*/
-
-#include <libmacadm.h>
diff --git a/usr/src/lib/libmacadm/common/mapfile-vers b/usr/src/lib/libmacadm/common/mapfile-vers
deleted file mode 100644
index 1ae18a3193..0000000000
--- a/usr/src/lib/libmacadm/common/mapfile-vers
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# 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 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-SUNWprivate_1.1 {
- global:
- macadm_walk;
- local:
- *;
-};
diff --git a/usr/src/lib/libmacadm/i386/Makefile b/usr/src/lib/libmacadm/i386/Makefile
deleted file mode 100644
index 7eae19fff7..0000000000
--- a/usr/src/lib/libmacadm/i386/Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (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 2005 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-#pragma ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS) $(ROOTLINT)
diff --git a/usr/src/lib/libmacadm/sparc/Makefile b/usr/src/lib/libmacadm/sparc/Makefile
deleted file mode 100644
index 7eae19fff7..0000000000
--- a/usr/src/lib/libmacadm/sparc/Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (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 2005 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-#pragma ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS) $(ROOTLINT)
diff --git a/usr/src/lib/libwladm/Makefile b/usr/src/lib/libwladm/Makefile
deleted file mode 100644
index 918c51889e..0000000000
--- a/usr/src/lib/libwladm/Makefile
+++ /dev/null
@@ -1,63 +0,0 @@
-#
-# 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 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-include $(SRC)/lib/Makefile.lib
-
-HDRS = libwladm.h libwladm_impl.h
-HDRDIR = common
-
-SUBDIRS = $(MACH)
-
-POFILE = libwladm.po
-MSGFILES = common/libwladm.c
-XGETFLAGS = -a -x libwladm.xcl
-
-all := TARGET = all
-clean := TARGET = clean
-clobber := TARGET = clobber
-install := TARGET = install
-lint := TARGET = lint
-
-.KEEP_STATE:
-
-all clean clobber install lint: $(SUBDIRS)
-
-install_h: $(ROOTHDRS)
-
-check: $(CHECKHDRS)
-
-$(POFILE): pofile_MSGFILES
-
-_msg: $(MSGDOMAINPOFILE)
-
-$(SUBDIRS): FRC
- @cd $@; pwd; $(MAKE) $(TARGET)
-
-FRC:
-
-include $(SRC)/Makefile.msg.targ
-include $(SRC)/lib/Makefile.targ
diff --git a/usr/src/lib/libwladm/Makefile.com b/usr/src/lib/libwladm/Makefile.com
deleted file mode 100644
index 1f8c9760df..0000000000
--- a/usr/src/lib/libwladm/Makefile.com
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# 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 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-LIBRARY = libwladm.a
-VERS = .1
-OBJECTS = libwladm.o
-
-include ../../Makefile.lib
-# install this library in the root filesystem
-include ../../Makefile.rootfs
-
-LIBS = $(DYNLIB) $(LINTLIB)
-LDLIBS += -ldevinfo -lsocket -lc
-
-SRCDIR = ../common
-$(LINTLIB) := SRCS = $(SRCDIR)/$(LINTSRC)
-
-CFLAGS += $(CCVERBOSE)
-CPPFLAGS += -I$(SRCDIR) -D_REENTRANT
-
-.KEEP_STATE:
-
-all: $(LIBS)
-
-lint: lintcheck
-
-include $(SRC)/lib/Makefile.targ
diff --git a/usr/src/lib/libwladm/common/libwladm.h b/usr/src/lib/libwladm/common/libwladm.h
deleted file mode 100644
index 45122cf312..0000000000
--- a/usr/src/lib/libwladm/common/libwladm.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * 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 2007 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifndef _LIBWLADM_H
-#define _LIBWLADM_H
-
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-#include <sys/types.h>
-
-/*
- * General libwladm definitions and functions.
- *
- * These interfaces are ON consolidation-private.
- * For documentation, refer to PSARC/2006/623.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define WLADM_MAX_ESSID_LEN 32 /* per 802.11 spec */
-#define WLADM_BSSID_LEN 6 /* per 802.11 spec */
-#define WLADM_STRSIZE 256
-
-#define WLADM_CONNECT_TIMEOUT_DEFAULT 10
-#define WLADM_OPT_CREATEIBSS 0x00000001
-#define WLADM_OPT_NOSCAN 0x00000002
-
-typedef struct wladm_essid {
- char we_bytes[WLADM_MAX_ESSID_LEN];
-} wladm_essid_t;
-
-typedef struct wladm_bssid {
- uint8_t wb_bytes[WLADM_BSSID_LEN];
-} wladm_bssid_t;
-
-typedef enum {
- WLADM_SECMODE_NONE = 1,
- WLADM_SECMODE_WEP
-} wladm_secmode_t;
-
-typedef enum {
- WLADM_STRENGTH_VERY_WEAK = 1,
- WLADM_STRENGTH_WEAK,
- WLADM_STRENGTH_GOOD,
- WLADM_STRENGTH_VERY_GOOD,
- WLADM_STRENGTH_EXCELLENT
-} wladm_strength_t;
-
-typedef enum {
- WLADM_MODE_NONE = 0,
- WLADM_MODE_80211A,
- WLADM_MODE_80211B,
- WLADM_MODE_80211G
-} wladm_mode_t;
-
-typedef enum {
- WLADM_AUTH_OPEN = 1,
- WLADM_AUTH_SHARED
-} wladm_auth_t;
-
-typedef enum {
- WLADM_BSSTYPE_BSS = 1,
- WLADM_BSSTYPE_IBSS,
- WLADM_BSSTYPE_ANY
-} wladm_bsstype_t;
-
-typedef enum {
- WLADM_LINK_STATUS_DISCONNECTED = 1,
- WLADM_LINK_STATUS_CONNECTED
-} wladm_linkstatus_t;
-
-typedef enum {
- WLADM_STATUS_OK = 0,
- WLADM_STATUS_BADARG,
- WLADM_STATUS_FAILED,
- WLADM_STATUS_NOTSUP,
- WLADM_STATUS_ISCONN,
- WLADM_STATUS_NOTCONN,
- WLADM_STATUS_NOTFOUND,
- WLADM_STATUS_BADVAL,
- WLADM_STATUS_LINKINVAL,
- WLADM_STATUS_NOMEM,
- WLADM_STATUS_TIMEDOUT,
- WLADM_STATUS_PROPRDONLY,
- WLADM_STATUS_TOOSMALL,
- WLADM_STATUS_BADVALCNT
-} wladm_status_t;
-
-typedef uint32_t wladm_speed_t;
-typedef uint32_t wladm_channel_t;
-
-enum {
- WLADM_WLAN_ATTR_ESSID = 0x00000001,
- WLADM_WLAN_ATTR_BSSID = 0x00000002,
- WLADM_WLAN_ATTR_SECMODE = 0x00000004,
- WLADM_WLAN_ATTR_STRENGTH = 0x00000008,
- WLADM_WLAN_ATTR_MODE = 0x00000010,
- WLADM_WLAN_ATTR_SPEED = 0x00000020,
- WLADM_WLAN_ATTR_AUTH = 0x00000040,
- WLADM_WLAN_ATTR_BSSTYPE = 0x00000080,
- WLADM_WLAN_ATTR_CHANNEL = 0x00000100
-};
-typedef struct wladm_wlan_attr {
- uint_t wa_valid;
- wladm_essid_t wa_essid;
- wladm_bssid_t wa_bssid;
- wladm_secmode_t wa_secmode;
- wladm_strength_t wa_strength;
- wladm_mode_t wa_mode;
- wladm_speed_t wa_speed;
- wladm_auth_t wa_auth;
- wladm_bsstype_t wa_bsstype;
- wladm_channel_t wa_channel;
-} wladm_wlan_attr_t;
-
-enum {
- WLADM_LINK_ATTR_STATUS = 0x00000001,
- WLADM_LINK_ATTR_WLAN = 0x00000002
-};
-typedef struct wladm_link_attr {
- uint_t la_valid;
- wladm_linkstatus_t la_status;
- wladm_wlan_attr_t la_wlan_attr;
-} wladm_link_attr_t;
-
-#define WLADM_WEPKEY64_LEN 5 /* per WEP spec */
-#define WLADM_WEPKEY128_LEN 13 /* per WEP spec */
-#define WLADM_MAX_WEPKEY_LEN 13 /* per WEP spec */
-#define WLADM_MAX_WEPKEYS 4 /* MAX_NWEPKEYS */
-#define WLADM_MAX_WEPKEYNAME_LEN 64
-typedef struct wladm_wep_key {
- uint_t wk_idx;
- uint_t wk_len;
- uint8_t wk_val[WLADM_MAX_WEPKEY_LEN];
- char wk_name[WLADM_MAX_WEPKEYNAME_LEN];
-} wladm_wep_key_t;
-
-typedef enum {
- WLADM_PROP_VAL_CURRENT = 1,
- WLADM_PROP_VAL_DEFAULT,
- WLADM_PROP_VAL_MODIFIABLE
-} wladm_prop_type_t;
-
-extern wladm_status_t wladm_scan(const char *, void *,
- boolean_t (*)(void *, wladm_wlan_attr_t *));
-extern wladm_status_t wladm_connect(const char *, wladm_wlan_attr_t *,
- int, void *, uint_t, uint_t);
-extern wladm_status_t wladm_disconnect(const char *);
-extern wladm_status_t wladm_get_link_attr(const char *, wladm_link_attr_t *);
-extern wladm_status_t wladm_walk(void *, boolean_t (*)(void *, const char *));
-extern boolean_t wladm_is_valid(const char *);
-extern wladm_status_t wladm_set_prop(const char *, const char *, char **,
- uint_t, char **);
-extern wladm_status_t wladm_walk_prop(const char *, void *,
- boolean_t (*)(void *, const char *));
-extern wladm_status_t wladm_get_prop(const char *, wladm_prop_type_t,
- const char *, char **, uint_t *);
-
-extern const char *wladm_essid2str(wladm_essid_t *, char *);
-extern const char *wladm_bssid2str(wladm_bssid_t *, char *);
-extern const char *wladm_secmode2str(wladm_secmode_t *, char *);
-extern const char *wladm_strength2str(wladm_strength_t *, char *);
-extern const char *wladm_mode2str(wladm_mode_t *, char *);
-extern const char *wladm_speed2str(wladm_speed_t *, char *);
-extern const char *wladm_auth2str(wladm_auth_t *, char *);
-extern const char *wladm_bsstype2str(wladm_bsstype_t *, char *);
-extern const char *wladm_linkstatus2str(wladm_linkstatus_t *, char *);
-extern const char *wladm_status2str(wladm_status_t, char *);
-
-extern wladm_status_t wladm_str2essid(const char *, wladm_essid_t *);
-extern wladm_status_t wladm_str2bssid(const char *, wladm_bssid_t *);
-extern wladm_status_t wladm_str2secmode(const char *, wladm_secmode_t *);
-extern wladm_status_t wladm_str2strength(const char *, wladm_strength_t *);
-extern wladm_status_t wladm_str2mode(const char *, wladm_mode_t *);
-extern wladm_status_t wladm_str2speed(const char *, wladm_speed_t *);
-extern wladm_status_t wladm_str2auth(const char *, wladm_auth_t *);
-extern wladm_status_t wladm_str2bsstype(const char *, wladm_bsstype_t *);
-extern wladm_status_t wladm_str2linkstatus(const char *,
- wladm_linkstatus_t *);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _LIBWLADM_H */
diff --git a/usr/src/lib/libwladm/common/llib-lwladm b/usr/src/lib/libwladm/common/llib-lwladm
deleted file mode 100644
index 1f233e14ec..0000000000
--- a/usr/src/lib/libwladm/common/llib-lwladm
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 2006 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-/*LINTLIBRARY*/
-/*PROTOLIB1*/
-
-#include <libwladm.h>
diff --git a/usr/src/lib/libwladm/common/mapfile-vers b/usr/src/lib/libwladm/common/mapfile-vers
deleted file mode 100644
index c5f00d22b4..0000000000
--- a/usr/src/lib/libwladm/common/mapfile-vers
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 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 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-SUNWprivate_1.1 {
- global:
- wladm_scan;
- wladm_connect;
- wladm_disconnect;
- wladm_get_link_attr;
- wladm_walk;
- wladm_is_valid;
- wladm_set_prop;
- wladm_walk_prop;
- wladm_get_prop;
- wladm_essid2str;
- wladm_bssid2str;
- wladm_secmode2str;
- wladm_strength2str;
- wladm_mode2str;
- wladm_speed2str;
- wladm_auth2str;
- wladm_bsstype2str;
- wladm_linkstatus2str;
- wladm_status2str;
- wladm_str2essid;
- wladm_str2bssid;
- wladm_str2secmode;
- wladm_str2strength;
- wladm_str2mode;
- wladm_str2speed;
- wladm_str2auth;
- wladm_str2bsstype;
- wladm_str2linkstatus;
- local:
- *;
-};
diff --git a/usr/src/lib/libwladm/i386/Makefile b/usr/src/lib/libwladm/i386/Makefile
deleted file mode 100644
index a333224278..0000000000
--- a/usr/src/lib/libwladm/i386/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# 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 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS) $(ROOTLINT)
diff --git a/usr/src/lib/libwladm/libwladm.xcl b/usr/src/lib/libwladm/libwladm.xcl
deleted file mode 100644
index 69fa067e65..0000000000
--- a/usr/src/lib/libwladm/libwladm.xcl
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# 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 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-msgid "a"
-msgid "b"
-msgid "g"
-msgid "channel"
-msgid "powermode"
-msgid "radio"
-msgid "speed"
-msgid ""
-msgid "%.*f"
-msgid "%d"
-msgid "%s"
-msgid "%s%d"
-msgid "%u"
-msgid "/"
-msgid "/dev/%s"
-msgid "open"
-msgid "shared"
-msgid "bss"
-msgid "ibss"
-msgid "any"
-msgid "on"
-msgid "off"
-msgid "fast"
-msgid "max"
-msgid "wep"
-msgid "none"
diff --git a/usr/src/lib/libwladm/sparc/Makefile b/usr/src/lib/libwladm/sparc/Makefile
deleted file mode 100644
index a333224278..0000000000
--- a/usr/src/lib/libwladm/sparc/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# 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 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS) $(ROOTLINT)