diff options
| author | Vasumathi Sundaram <Vasumathi.Sundaram@oracle.COM> | 2010-06-09 12:41:50 -0400 |
|---|---|---|
| committer | Vasumathi Sundaram <Vasumathi.Sundaram@oracle.COM> | 2010-06-09 12:41:50 -0400 |
| commit | 67ce1608485eaed30c04c55a3561bb02dea17140 (patch) | |
| tree | 9f9c9df8e639ce09359bdef5c4bc7428100ad4cf /usr/src/cmd | |
| parent | a1837c6df940f4a4992df53cc52935596ced1b89 (diff) | |
| download | illumos-joyent-67ce1608485eaed30c04c55a3561bb02dea17140.tar.gz | |
6954959 libipadm now allows 'ifconfig bge0 removeif <address>' to succeed.
Diffstat (limited to 'usr/src/cmd')
| -rw-r--r-- | usr/src/cmd/cmd-inet/usr.sbin/ifconfig/ifconfig.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/usr/src/cmd/cmd-inet/usr.sbin/ifconfig/ifconfig.c b/usr/src/cmd/cmd-inet/usr.sbin/ifconfig/ifconfig.c index a3af8ef955..c511a2153e 100644 --- a/usr/src/cmd/cmd-inet/usr.sbin/ifconfig/ifconfig.c +++ b/usr/src/cmd/cmd-inet/usr.sbin/ifconfig/ifconfig.c @@ -1996,13 +1996,23 @@ removeif(char *str, int64_t param) if (sockaddrcmp(ainfop->ia_ifa.ifa_addr, &laddr)) break; - if (ainfop != NULL && ainfop->ia_aobjname[0] != '\0') { - istatus = ipadm_delete_addr(iph, ainfop->ia_aobjname, - IPADM_OPT_ACTIVE); - if (istatus != IPADM_SUCCESS) - ipadmerr_exit(istatus, "could not delete address"); - ipadm_free_addr_info(ainfo); - return (0); + if (ainfop != NULL) { + if (strchr(ainfop->ia_ifa.ifa_name, ':') == NULL) { + (void) fprintf(stderr, + "ifconfig: removeif: cannot remove interface: %s\n", + name); + exit(1); + } + if (ainfop->ia_aobjname[0] != '\0') { + istatus = ipadm_delete_addr(iph, ainfop->ia_aobjname, + IPADM_OPT_ACTIVE); + if (istatus != IPADM_SUCCESS) { + ipadmerr_exit(istatus, + "could not delete address"); + } + ipadm_free_addr_info(ainfo); + return (0); + } } ipadm_free_addr_info(ainfo); @@ -2017,7 +2027,7 @@ delete: if (errno == EBUSY) { /* This can only happen if ipif_id = 0 */ (void) fprintf(stderr, - "ifconfig: removeif: can't remove interface: %s\n", + "ifconfig: removeif: cannot remove interface: %s\n", name); exit(1); } @@ -3016,7 +3026,7 @@ configinfo(char *null, int64_t param) } /* - * Build the interface name to print (we can't directly use `name' + * Build the interface name to print (we cannot directly use `name' * because one cannot "plumb" ":0" interfaces). */ (void) strlcpy(lifname, name, LIFNAMSIZ); |
