summaryrefslogtreecommitdiff
path: root/usr/src/lib/libdladm/common/libdladm.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libdladm/common/libdladm.c')
-rw-r--r--usr/src/lib/libdladm/common/libdladm.c57
1 files changed, 55 insertions, 2 deletions
diff --git a/usr/src/lib/libdladm/common/libdladm.c b/usr/src/lib/libdladm/common/libdladm.c
index 37823ce913..1452e6de01 100644
--- a/usr/src/lib/libdladm/common/libdladm.c
+++ b/usr/src/lib/libdladm/common/libdladm.c
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2015, Joyent, Inc.
+ * Copyright (c) 2016, Joyent, Inc.
*/
#include <unistd.h>
@@ -99,6 +99,18 @@ static link_protect_t link_protect_types[] = {
};
#define LPTYPES (sizeof (link_protect_types) / sizeof (link_protect_t))
+typedef struct {
+ uint32_t ld_type;
+ char *ld_name;
+} link_dynamic_t;
+
+static link_dynamic_t link_dynamic_types[] = {
+ { MPT_DYN_DHCPV4, "dhcpv4" },
+ { MPT_DYN_DHCPV6, "dhcpv6" },
+ { MPT_DYN_SLAAC, "slaac" },
+};
+#define DYNTYPES (sizeof (link_dynamic_types) / sizeof (link_dynamic_t))
+
dladm_status_t
dladm_open(dladm_handle_t *handle)
{
@@ -945,6 +957,47 @@ dladm_protect2str(uint32_t ptype, char *buf)
}
/*
+ * Convert dynamic address method string to a value.
+ */
+dladm_status_t
+dladm_str2dynamic(char *token, uint32_t *dtype)
+{
+ link_dynamic_t *ld;
+ int i;
+
+ for (i = 0; i < DYNTYPES; i++) {
+ ld = &link_dynamic_types[i];
+ if (strcmp(token, ld->ld_name) == 0) {
+ *dtype = ld->ld_type;
+ return (DLADM_STATUS_OK);
+ }
+ }
+ return (DLADM_STATUS_BADVAL);
+}
+
+
+/*
+ * Convert dynamic address method value to a string.
+ */
+const char *
+dladm_dynamic2str(uint32_t dtype, char *buf)
+{
+ const char *s = "--";
+ link_dynamic_t *ld;
+ int i;
+
+ for (i = 0; i < DYNTYPES; i++) {
+ ld = &link_dynamic_types[i];
+ if (ld->ld_type == dtype) {
+ s = ld->ld_name;
+ break;
+ }
+ }
+ (void) snprintf(buf, DLADM_STRSIZE, "%s", dgettext(TEXT_DOMAIN, s));
+ return (buf);
+}
+
+/*
* Convert an IPv4 address to/from a string.
*/
const char *
@@ -1086,7 +1139,7 @@ fail:
*/
dladm_status_t
dladm_strs2range(char **prop_val, uint_t val_cnt,
- mac_propval_type_t type, mac_propval_range_t **range)
+ mac_propval_type_t type, mac_propval_range_t **range)
{
int i;
char *endp;