diff options
| author | meem <Peter.Memishian@Sun.COM> | 2009-02-21 04:48:37 -0500 |
|---|---|---|
| committer | meem <Peter.Memishian@Sun.COM> | 2009-02-21 04:48:37 -0500 |
| commit | 89b1c373241516c5168ea4c0920fd56b80139a2f (patch) | |
| tree | 65294ae64796e28422ba0a59c690e87b26f5b7d2 /usr/src/cmd/zoneadmd | |
| parent | 08556f6c986d17ed3d96f39954c1fa8e6e302a81 (diff) | |
| download | illumos-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.c | 33 |
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); |
