summaryrefslogtreecommitdiff
path: root/usr/src/cmd
diff options
context:
space:
mode:
authorVasumathi Sundaram <Vasumathi.Sundaram@oracle.COM>2010-06-09 12:41:50 -0400
committerVasumathi Sundaram <Vasumathi.Sundaram@oracle.COM>2010-06-09 12:41:50 -0400
commit67ce1608485eaed30c04c55a3561bb02dea17140 (patch)
tree9f9c9df8e639ce09359bdef5c4bc7428100ad4cf /usr/src/cmd
parenta1837c6df940f4a4992df53cc52935596ced1b89 (diff)
downloadillumos-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.c28
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);