diff options
Diffstat (limited to 'usr/src/lib/libdladm/common/libdlvnic.c')
-rw-r--r-- | usr/src/lib/libdladm/common/libdlvnic.c | 19 |
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 */ |