Print this page
10052 "dladm show-ether" should pick one kstat snapshot and stick with it
Reviewed by: Rob Johnston <rob.johnston@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Gergo Doma <domag02@gmail.com>
Reviewed by: Andy Fiddaman <andy@omniosce.org>
@@ -20,10 +20,14 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
*/
+/*
+ * Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
+ */
+
#include <unistd.h>
#include <errno.h>
#include <ctype.h>
#include <fcntl.h>
#include <strings.h>
@@ -119,10 +123,11 @@
return (DLADM_STATUS_NOMEM);
}
(*handle)->dld_fd = dld_fd;
(*handle)->door_fd = -1;
+ (*handle)->dld_kcp = NULL;
return (DLADM_STATUS_OK);
}
void
@@ -130,10 +135,12 @@
{
if (handle != NULL) {
(void) close(handle->dld_fd);
if (handle->door_fd != -1)
(void) close(handle->door_fd);
+ if (handle->dld_kcp != NULL)
+ (void) kstat_close(handle->dld_kcp);
free(handle);
}
}
int
@@ -140,10 +147,18 @@
dladm_dld_fd(dladm_handle_t handle)
{
return (handle->dld_fd);
}
+kstat_ctl_t *
+dladm_dld_kcp(dladm_handle_t handle)
+{
+ if (handle->dld_kcp == NULL)
+ handle->dld_kcp = kstat_open();
+ return (handle->dld_kcp);
+}
+
/*
* If DLMGMT_DOOR hasn't been opened in the handle yet, open it.
*/
dladm_status_t
dladm_door_fd(dladm_handle_t handle, int *door_fd)