Revert revision 199201 for now as it has introduced a kernel vulnerability
and requires more polishing.
This commit is contained in:
parent
2f28bf307c
commit
1a9d4dda9b
@ -403,30 +403,22 @@ add_addr_to_iflist(pcap_if_t **alldevs, const char *name, u_int flags,
|
||||
pcap_addr_t *curaddr, *prevaddr, *nextaddr;
|
||||
#ifdef SIOCGIFDESCR
|
||||
struct ifreq ifrdesc;
|
||||
#ifdef __FreeBSD__
|
||||
#define _IFDESCRSIZE 64
|
||||
char ifdescr[_IFDESCRSIZE];
|
||||
#else
|
||||
char ifdescr[IFDESCRSIZE];
|
||||
#endif
|
||||
int s;
|
||||
#endif
|
||||
|
||||
#ifdef SIOCGIFDESCR
|
||||
/*
|
||||
* Get the description for the interface.
|
||||
*/
|
||||
memset(&ifrdesc, 0, sizeof ifrdesc);
|
||||
strlcpy(ifrdesc.ifr_name, name, sizeof ifrdesc.ifr_name);
|
||||
#ifdef __FreeBSD__
|
||||
ifrdesc.ifr_buffer.buffer = ifdescr;
|
||||
ifrdesc.ifr_buffer.length = _IFDESCRSIZE;
|
||||
#else
|
||||
ifrdesc.ifr_data = (caddr_t)&ifdescr;
|
||||
#endif
|
||||
s = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (s >= 0) {
|
||||
if (ioctl(s, SIOCGIFDESCR, &ifrdesc) == 0 &&
|
||||
strlen(ifdescr) != 0)
|
||||
description = ifdescr;
|
||||
strlen(ifrdesc.ifr_data) != 0)
|
||||
description = ifrdesc.ifr_data;
|
||||
close(s);
|
||||
}
|
||||
#endif
|
||||
|
@ -28,7 +28,7 @@
|
||||
.\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd November 11, 2009
|
||||
.Dd September 23, 2009
|
||||
.Dt IFCONFIG 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -258,12 +258,6 @@ Disable permanently promiscuous mode.
|
||||
Another name for the
|
||||
.Fl alias
|
||||
parameter.
|
||||
.It Cm description Ar value
|
||||
Specify a description of the interface.
|
||||
This can be used to label interfaces in situations where they may
|
||||
otherwise be difficult to distinguish.
|
||||
.It Cm -description
|
||||
Clear the interface description.
|
||||
.It Cm down
|
||||
Mark an interface
|
||||
.Dq down .
|
||||
@ -2518,10 +2512,6 @@ Configure the interface
|
||||
to use 100baseTX, full duplex Ethernet media options:
|
||||
.Dl # ifconfig xl0 media 100baseTX mediaopt full-duplex
|
||||
.Pp
|
||||
Label the em0 interface as an uplink:
|
||||
.Pp
|
||||
.Dl # ifconfig em0 description \&"Uplink to Gigabit Switch 2\&"
|
||||
.Pp
|
||||
Create the software network interface
|
||||
.Li gif1 :
|
||||
.Dl # ifconfig gif1 create
|
||||
|
@ -83,8 +83,6 @@ static const char rcsid[] =
|
||||
struct ifreq ifr;
|
||||
|
||||
char name[IFNAMSIZ];
|
||||
char *descr = NULL;
|
||||
size_t descrlen = 64;
|
||||
int setaddr;
|
||||
int setmask;
|
||||
int doalias;
|
||||
@ -824,36 +822,6 @@ setifname(const char *val, int dummy __unused, int s,
|
||||
free(newname);
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
setifdescr(const char *val, int dummy __unused, int s,
|
||||
const struct afswtch *afp)
|
||||
{
|
||||
char *newdescr;
|
||||
|
||||
newdescr = strdup(val);
|
||||
if (newdescr == NULL) {
|
||||
warn("no memory to set ifdescr");
|
||||
return;
|
||||
}
|
||||
ifr.ifr_buffer.buffer = newdescr;
|
||||
ifr.ifr_buffer.length = strlen(newdescr);
|
||||
if (ioctl(s, SIOCSIFDESCR, (caddr_t)&ifr) < 0) {
|
||||
warn("ioctl (set descr)");
|
||||
free(newdescr);
|
||||
return;
|
||||
}
|
||||
free(newdescr);
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
unsetifdescr(const char *val, int value, int s, const struct afswtch *afp)
|
||||
{
|
||||
|
||||
setifdescr("", 0, s, 0);
|
||||
}
|
||||
|
||||
#define IFFBITS \
|
||||
"\020\1UP\2BROADCAST\3DEBUG\4LOOPBACK\5POINTOPOINT\6SMART\7RUNNING" \
|
||||
"\10NOARP\11PROMISC\12ALLMULTI\13OACTIVE\14SIMPLEX\15LINK0\16LINK1\17LINK2" \
|
||||
@ -898,23 +866,6 @@ status(const struct afswtch *afp, const struct sockaddr_dl *sdl,
|
||||
printf(" mtu %d", ifr.ifr_mtu);
|
||||
putchar('\n');
|
||||
|
||||
descr = reallocf(descr, descrlen);
|
||||
if (descr != NULL) {
|
||||
do {
|
||||
ifr.ifr_buffer.buffer = descr;
|
||||
ifr.ifr_buffer.length = descrlen;
|
||||
if (ioctl(s, SIOCGIFDESCR, &ifr) == 0) {
|
||||
if (strlen(descr) > 0)
|
||||
printf("\tdescription: %s\n", descr);
|
||||
break;
|
||||
}
|
||||
if (errno == ENAMETOOLONG) {
|
||||
descrlen *= 2;
|
||||
descr = reallocf(descr, descrlen);
|
||||
}
|
||||
} while (errno == ENAMETOOLONG);
|
||||
}
|
||||
|
||||
if (ioctl(s, SIOCGIFCAP, (caddr_t)&ifr) == 0) {
|
||||
if (ifr.ifr_curcap != 0) {
|
||||
printb("\toptions", ifr.ifr_curcap, IFCAPBITS);
|
||||
@ -1084,10 +1035,6 @@ static struct cmd basic_cmds[] = {
|
||||
DEF_CMD("-arp", IFF_NOARP, setifflags),
|
||||
DEF_CMD("debug", IFF_DEBUG, setifflags),
|
||||
DEF_CMD("-debug", -IFF_DEBUG, setifflags),
|
||||
DEF_CMD_ARG("description", setifdescr),
|
||||
DEF_CMD_ARG("descr", setifdescr),
|
||||
DEF_CMD("-description", 0, unsetifdescr),
|
||||
DEF_CMD("-descr", 0, unsetifdescr),
|
||||
DEF_CMD("promisc", IFF_PPROMISC, setifflags),
|
||||
DEF_CMD("-promisc", -IFF_PPROMISC, setifflags),
|
||||
DEF_CMD("add", IFF_UP, notealias),
|
||||
|
@ -32,7 +32,7 @@
|
||||
.\" @(#)netintro.4 8.2 (Berkeley) 11/30/93
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd November 11, 2009
|
||||
.Dd June 18, 2004
|
||||
.Dt NETINTRO 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -277,25 +277,6 @@ and
|
||||
fields of the
|
||||
.Vt ifreq
|
||||
structure, respectively.
|
||||
.It Dv SIOCGIFDESCR
|
||||
Get the interface description, returned in the
|
||||
.Va buffer
|
||||
field of
|
||||
.Va ifru_buffer
|
||||
struct.
|
||||
The user supplied buffer length should defined in the
|
||||
.Va length
|
||||
field of
|
||||
.Va ifru_buffer
|
||||
struct passed in as parameter.
|
||||
.It Dv SIOCSIFDESCR
|
||||
Set the interface description to the value of the
|
||||
.Va buffer
|
||||
field of
|
||||
.Va ifru_buffer
|
||||
struct, with
|
||||
.Va length
|
||||
field specifying its length.
|
||||
.It Dv SIOCSIFFLAGS
|
||||
Set interface flags field.
|
||||
If the interface is marked down,
|
||||
|
@ -3467,7 +3467,6 @@ prison_priv_check(struct ucred *cred, int priv)
|
||||
case PRIV_NET_SETIFMTU:
|
||||
case PRIV_NET_SETIFFLAGS:
|
||||
case PRIV_NET_SETIFCAP:
|
||||
case PRIV_NET_SETIFDESCR:
|
||||
case PRIV_NET_SETIFNAME :
|
||||
case PRIV_NET_SETIFMETRIC:
|
||||
case PRIV_NET_SETIFPHYS:
|
||||
|
41
sys/net/if.c
41
sys/net/if.c
@ -463,8 +463,6 @@ if_free_internal(struct ifnet *ifp)
|
||||
#ifdef MAC
|
||||
mac_ifnet_destroy(ifp);
|
||||
#endif /* MAC */
|
||||
if (ifp->if_description != NULL)
|
||||
sbuf_delete(ifp->if_description);
|
||||
IF_AFDATA_DESTROY(ifp);
|
||||
IF_ADDR_LOCK_DESTROY(ifp);
|
||||
ifq_delete(&ifp->if_snd);
|
||||
@ -2092,45 +2090,6 @@ ifhwioctl(u_long cmd, struct ifnet *ifp, caddr_t data, struct thread *td)
|
||||
ifr->ifr_phys = ifp->if_physical;
|
||||
break;
|
||||
|
||||
case SIOCGIFDESCR:
|
||||
IF_AFDATA_RLOCK(ifp);
|
||||
if (ifp->if_description == NULL)
|
||||
error = ENOMSG;
|
||||
else
|
||||
error = copystr(sbuf_data(ifp->if_description),
|
||||
ifr->ifr_buffer.buffer,
|
||||
ifr->ifr_buffer.length, NULL);
|
||||
IF_AFDATA_RUNLOCK(ifp);
|
||||
break;
|
||||
|
||||
case SIOCSIFDESCR:
|
||||
error = priv_check(td, PRIV_NET_SETIFDESCR);
|
||||
if (error)
|
||||
return (error);
|
||||
|
||||
IF_AFDATA_WLOCK(ifp);
|
||||
if (ifp->if_description == NULL) {
|
||||
ifp->if_description = sbuf_new_auto();
|
||||
if (ifp->if_description == NULL) {
|
||||
error = ENOMEM;
|
||||
IF_AFDATA_WUNLOCK(ifp);
|
||||
break;
|
||||
}
|
||||
} else
|
||||
sbuf_clear(ifp->if_description);
|
||||
|
||||
if (sbuf_copyin(ifp->if_description, ifr->ifr_buffer.buffer,
|
||||
ifr->ifr_buffer.length) == -1)
|
||||
error = EFAULT;
|
||||
|
||||
if (error == 0) {
|
||||
sbuf_finish(ifp->if_description);
|
||||
getmicrotime(&ifp->if_lastchange);
|
||||
}
|
||||
IF_AFDATA_WUNLOCK(ifp);
|
||||
|
||||
break;
|
||||
|
||||
case SIOCSIFFLAGS:
|
||||
error = priv_check(td, PRIV_NET_SETIFFLAGS);
|
||||
if (error)
|
||||
|
@ -294,7 +294,6 @@ struct ifreq {
|
||||
struct sockaddr ifru_addr;
|
||||
struct sockaddr ifru_dstaddr;
|
||||
struct sockaddr ifru_broadaddr;
|
||||
struct { size_t length; caddr_t buffer; } ifru_buffer;
|
||||
short ifru_flags[2];
|
||||
short ifru_index;
|
||||
int ifru_jid;
|
||||
@ -308,7 +307,6 @@ struct ifreq {
|
||||
#define ifr_addr ifr_ifru.ifru_addr /* address */
|
||||
#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */
|
||||
#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
|
||||
#define ifr_buffer ifr_ifru.ifru_buffer /* user supplied buffer with its length */
|
||||
#define ifr_flags ifr_ifru.ifru_flags[0] /* flags (low 16 bits) */
|
||||
#define ifr_flagshigh ifr_ifru.ifru_flags[1] /* flags (high 16 bits) */
|
||||
#define ifr_jid ifr_ifru.ifru_jid /* jail/vnet */
|
||||
|
@ -198,7 +198,6 @@ struct ifnet {
|
||||
void *if_pf_kif;
|
||||
void *if_lagg; /* lagg glue */
|
||||
u_char if_alloctype; /* if_type at time of allocation */
|
||||
struct sbuf *if_description; /* interface description */
|
||||
|
||||
/*
|
||||
* Spare fields are added so that we can modify sensitive data
|
||||
@ -206,7 +205,7 @@ struct ifnet {
|
||||
* be used with care where binary compatibility is required.
|
||||
*/
|
||||
char if_cspare[3];
|
||||
void *if_pspare[7];
|
||||
void *if_pspare[8];
|
||||
int if_ispare[4];
|
||||
};
|
||||
|
||||
|
@ -58,7 +58,7 @@
|
||||
* in the range 5 to 9.
|
||||
*/
|
||||
#undef __FreeBSD_version
|
||||
#define __FreeBSD_version 900003 /* Master, propagated to newvers */
|
||||
#define __FreeBSD_version 900002 /* Master, propagated to newvers */
|
||||
|
||||
#ifndef LOCORE
|
||||
#include <sys/types.h>
|
||||
|
@ -335,7 +335,6 @@
|
||||
#define PRIV_NET_LAGG 415 /* Administer lagg interface. */
|
||||
#define PRIV_NET_GIF 416 /* Administer gif interface. */
|
||||
#define PRIV_NET_SETIFVNET 417 /* Move interface to vnet. */
|
||||
#define PRIV_NET_SETIFDESCR 418 /* Set interface description. */
|
||||
|
||||
/*
|
||||
* 802.11-related privileges.
|
||||
|
@ -82,8 +82,6 @@
|
||||
#define SIOCGIFMAC _IOWR('i', 38, struct ifreq) /* get IF MAC label */
|
||||
#define SIOCSIFMAC _IOW('i', 39, struct ifreq) /* set IF MAC label */
|
||||
#define SIOCSIFNAME _IOW('i', 40, struct ifreq) /* set IF name */
|
||||
#define SIOCSIFDESCR _IOW('i', 41, struct ifreq) /* set ifnet descr */
|
||||
#define SIOCGIFDESCR _IOWR('i', 42, struct ifreq) /* get ifnet descr */
|
||||
|
||||
#define SIOCADDMULTI _IOW('i', 49, struct ifreq) /* add m'cast addr */
|
||||
#define SIOCDELMULTI _IOW('i', 50, struct ifreq) /* del m'cast addr */
|
||||
|
Loading…
Reference in New Issue
Block a user