summaryrefslogtreecommitdiff
path: root/usr/src/lib/libdladm/common/libdlvnic.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libdladm/common/libdlvnic.c')
-rw-r--r--usr/src/lib/libdladm/common/libdlvnic.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/usr/src/lib/libdladm/common/libdlvnic.c b/usr/src/lib/libdladm/common/libdlvnic.c
index 7ff0cd5530..27e856006c 100644
--- a/usr/src/lib/libdladm/common/libdlvnic.c
+++ b/usr/src/lib/libdladm/common/libdlvnic.c
@@ -405,7 +405,7 @@ dladm_vnic_create(dladm_handle_t handle, const char *vnic, datalink_id_t linkid,
{
dladm_vnic_attr_t attr;
datalink_id_t vnic_id;
- datalink_class_t class;
+ datalink_class_t class, pclass;
uint32_t media = DL_ETHER;
uint32_t link_flags;
char name[MAXLINKNAMELEN];
@@ -443,7 +443,7 @@ dladm_vnic_create(dladm_handle_t handle, const char *vnic, datalink_id_t linkid,
if (!is_etherstub) {
if ((status = dladm_datalink_id2info(handle, linkid,
- &link_flags, &class, &media, NULL, 0)) != DLADM_STATUS_OK)
+ &link_flags, &pclass, &media, NULL, 0)) != DLADM_STATUS_OK)
return (status);
/* Disallow persistent objects on top of temporary ones */
@@ -452,8 +452,8 @@ dladm_vnic_create(dladm_handle_t handle, const char *vnic, datalink_id_t linkid,
return (DLADM_STATUS_PERSIST_ON_TEMP);
/* Links cannot be created on top of these object types */
- if (class == DATALINK_CLASS_VNIC ||
- class == DATALINK_CLASS_VLAN)
+ if (pclass == DATALINK_CLASS_VNIC ||
+ pclass == DATALINK_CLASS_VLAN)
return (DLADM_STATUS_BADARG);
}
@@ -548,8 +548,17 @@ dladm_vnic_create(dladm_handle_t handle, const char *vnic, datalink_id_t linkid,
attr.va_force = (flags & DLADM_OPT_FORCE) != 0;
status = i_dladm_vnic_create_sys(handle, &attr);
- if (status != DLADM_STATUS_OK)
+ if (status != DLADM_STATUS_OK) {
+ if (!is_etherstub && pclass == DATALINK_CLASS_OVERLAY &&
+ status == DLADM_STATUS_ADDRNOTAVAIL) {
+ char errmsg[DLADM_STRSIZE];
+ (void) dladm_errlist_append(errs,
+ "failed to start overlay device; "
+ "could not open underlay socket: %s",
+ dladm_status2str(status, errmsg));
+ }
goto done;
+ }
vnic_created = B_TRUE;
/* Save vnic configuration and its properties */