summaryrefslogtreecommitdiff
path: root/usr/src/cmd/zoneadmd
diff options
context:
space:
mode:
authormeem <Peter.Memishian@Sun.COM>2009-02-21 04:48:37 -0500
committermeem <Peter.Memishian@Sun.COM>2009-02-21 04:48:37 -0500
commit89b1c373241516c5168ea4c0920fd56b80139a2f (patch)
tree65294ae64796e28422ba0a59c690e87b26f5b7d2 /usr/src/cmd/zoneadmd
parent08556f6c986d17ed3d96f39954c1fa8e6e302a81 (diff)
downloadillumos-joyent-89b1c373241516c5168ea4c0920fd56b80139a2f.tar.gz
6667014 zoneadmd calls zerror() with bogus errno values
Diffstat (limited to 'usr/src/cmd/zoneadmd')
-rw-r--r--usr/src/cmd/zoneadmd/vplat.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/usr/src/cmd/zoneadmd/vplat.c b/usr/src/cmd/zoneadmd/vplat.c
index 8314387396..b8ec982fb5 100644
--- a/usr/src/cmd/zoneadmd/vplat.c
+++ b/usr/src/cmd/zoneadmd/vplat.c
@@ -2524,22 +2524,33 @@ configure_shared_network_interfaces(zlog_t *zlogp)
return (0);
}
+static void
+zdlerror(zlog_t *zlogp, dladm_status_t err, const char *dlname, const char *str)
+{
+ char errmsg[DLADM_STRSIZE];
+
+ (void) dladm_status2str(err, errmsg);
+ zerror(zlogp, B_FALSE, "%s '%s': %s", str, dlname, errmsg);
+}
+
static int
add_datalink(zlog_t *zlogp, char *zone_name, char *dlname)
{
+ dladm_status_t err;
+
/* First check if it's in use by global zone. */
if (zonecfg_ifname_exists(AF_INET, dlname) ||
zonecfg_ifname_exists(AF_INET6, dlname)) {
- errno = EPERM;
- zerror(zlogp, B_TRUE, "WARNING: skipping network interface "
- "'%s' which is used in the global zone.", dlname);
+ zerror(zlogp, B_FALSE, "WARNING: skipping network interface "
+ "'%s' which is used in the global zone", dlname);
return (-1);
}
/* Set zoneid of this link. */
- if (dladm_setzid(dld_handle, dlname, zone_name) != DLADM_STATUS_OK) {
- zerror(zlogp, B_TRUE, "WARNING: unable to add network "
- "interface '%s'.", dlname);
+ err = dladm_setzid(dld_handle, dlname, zone_name);
+ if (err != DLADM_STATUS_OK) {
+ zdlerror(zlogp, err, dlname,
+ "WARNING: unable to add network interface");
return (-1);
}
@@ -2549,10 +2560,12 @@ add_datalink(zlog_t *zlogp, char *zone_name, char *dlname)
static int
remove_datalink(zlog_t *zlogp, char *dlname)
{
- if (dladm_setzid(dld_handle, dlname, GLOBAL_ZONENAME)
- != DLADM_STATUS_OK) {
- zerror(zlogp, B_TRUE, "unable to release network "
- "interface '%s'", dlname);
+ dladm_status_t err;
+
+ err = dladm_setzid(dld_handle, dlname, GLOBAL_ZONENAME);
+ if (err != DLADM_STATUS_OK) {
+ zdlerror(zlogp, err, dlname,
+ "unable to release network interface");
return (-1);
}
return (0);