Page MenuHomeFreeBSD

D28247.id.diff
No OneTemporary

D28247.id.diff

Index: sbin/ifconfig/ifconfig.c
===================================================================
--- sbin/ifconfig/ifconfig.c
+++ sbin/ifconfig/ifconfig.c
@@ -1410,10 +1410,31 @@
}
} else
warn("unable to allocate memory for interface"
- "description");
+ " description");
break;
}
+ descrlen = IFNAMSIZ;
+ if ((descr = reallocf(descr, descrlen)) != NULL) {
+ ifr.ifr_buffer.buffer = descr;
+ ifr.ifr_buffer.length = descrlen;
+ if (ioctl(s, SIOCGIFDNAME, &ifr) == 0) {
+ if (ifr.ifr_buffer.buffer == descr) {
+ if (strlen(descr) > 0 && strncmp(name,
+ descr, descrlen) != 0) {
+ printf("\tinitname: %s\n",
+ descr);
+ }
+ } else if (ifr.ifr_buffer.length > descrlen) {
+ warn("unable to allocate memory for interface"
+ " initname");
+ }
+ }
+ } else {
+ warn("unable to allocate memory for interface"
+ " initname");
+ }
+
if (ioctl(s, SIOCGIFCAP, (caddr_t)&ifr) == 0) {
if (ifr.ifr_curcap != 0) {
printb("\toptions", ifr.ifr_curcap, IFCAPBITS);
Index: sys/net/if.c
===================================================================
--- sys/net/if.c
+++ sys/net/if.c
@@ -2708,6 +2708,28 @@
ifp->if_flags &= ~IFF_RENAMING;
break;
+ case SIOCGIFDNAME:
+ error = 0;
+ if (ifp->if_dname == NULL || ifp->if_dunit == IF_DUNIT_NONE) {
+ error = ENOMSG;
+ break;
+ }
+ descrlen = snprintf(new_name, sizeof(new_name), "%s%u",
+ ifp->if_dname, ifp->if_dunit);
+ if (descrlen < 0) {
+ error = ENOMSG;
+ break;
+ }
+ /* space for terminating nul */
+ descrlen++;
+ if (ifr_buffer_get_length(ifr) < descrlen)
+ ifr_buffer_set_buffer_null(ifr);
+ else
+ error = copyout(new_name,
+ ifr_buffer_get_buffer(ifr), descrlen);
+ ifr_buffer_set_length(ifr, descrlen);
+ break;
+
#ifdef VIMAGE
case SIOCSIFVNET:
error = priv_check(td, PRIV_NET_SETIFVNET);
Index: sys/sys/sockio.h
===================================================================
--- sys/sys/sockio.h
+++ sys/sys/sockio.h
@@ -147,4 +147,6 @@
#define SIOCGIFDOWNREASON _IOWR('i', 154, struct ifdownreason)
+#define SIOCGIFDNAME _IOWR('i', 155, struct ifreq) /* get ifnet dname + dunit */
+
#endif /* !_SYS_SOCKIO_H_ */

File Metadata

Mime Type
text/plain
Expires
Sun, Feb 15, 6:01 PM (2 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28751131
Default Alt Text
D28247.id.diff (2 KB)

Event Timeline