ifconfig description
bart
bart at convex.ru
Thu Dec 1 20:55:57 GMT 2005
*** sys/net/if.c.orig Fri Apr 15 07:52:03 2005
--- sys/net/if.c Sat Nov 26 17:34:41 2005
***************
*** 1072,1077 ****
--- 1072,1078 ----
{
struct ifreq *ifr;
struct ifstat *ifs;
+ struct ifdescreq *ifrd;
int error = 0;
int new_flags;
size_t namelen, onamelen;
***************
*** 1214,1219 ****
--- 1215,1232 ----
EVENTHANDLER_INVOKE(ifnet_arrival_event, ifp);
/* Announce the return of the interface. */
rt_ifannouncemsg(ifp, IFAN_ARRIVAL);
+ break;
+
+ /* bartp */
+
+ case SIOCSIFDESCR:
+ ifrd = (struct ifdescreq *)data;
+ strlcpy(ifp->if_descr, ifrd->ifrd_descr, MAXIFDESCRSIZE);
+ break;
+
+ case SIOCGIFDESCR:
+ ifrd = (struct ifdescreq *)data;
+ strlcpy(ifrd->ifrd_descr, ifp->if_descr, MAXIFDESCRSIZE);
break;
case SIOCSIFMETRIC:
*** sys/net/if.h.orig Tue Mar 1 03:03:13 2005
--- sys/net/if.h Tue Nov 29 17:21:13 2005
***************
*** 72,77 ****
--- 72,80 ----
char *ifcr_buffer; /* buffer for cloner names */
};
+ #define MAXIFDESCRSIZE 48
+
+
/*
* Structure describing information about an interface
* which may be of interest to management entities.
***************
*** 269,274 ****
--- 272,282 ----
struct sockaddr ifra_addr;
struct sockaddr ifra_broadaddr;
struct sockaddr ifra_mask;
+ };
+
+ struct ifdescreq {
+ char ifrd_name[IFNAMSIZ]; /* if name, e.g. "en0" */
+ char ifrd_descr[MAXIFDESCRSIZE]; /* interface description */
};
struct ifmediareq {
*** sys/net/if_var.h.orig Sun May 8 13:00:16 2005
--- sys/net/if_var.h Sat Nov 26 17:34:06 2005
***************
*** 200,205 ****
--- 200,206 ----
int if_afdata_initialized;
struct mtx if_afdata_mtx;
struct task if_starttask; /* task for IFF_NEEDSGIANT */
+ char if_descr[MAXIFDESCRSIZE];
};
typedef void if_init_f_t(void *);
*** sbin/ifconfig/ifconfig.c.orig Mon Mar 21 21:05:33 2005
--- sbin/ifconfig/ifconfig.c Fri Nov 25 15:29:35 2005
***************
*** 175,180 ****
--- 175,181 ----
c_func setifflags, setifmetric, setifmtu, setifcap;
c_func clone_destroy;
c_func setifname;
+ c_func setifdescr;
void clone_create(void);
***************
*** 310,315 ****
--- 311,317 ----
{ "noicmp", IFF_LINK1, setifflags },
{ "mtu", NEXTARG, setifmtu },
{ "name", NEXTARG, setifname },
+ { "descr", NEXTARG, setifdescr },
{ 0, 0, setifaddr },
{ 0, 0, setifdstaddr },
};
***************
*** 1008,1013 ****
--- 1010,1031 ----
(*afp->af_getaddr)(addr, DSTADDR);
}
+ static void
+ setifdescr(const char *val, int dummy __unused, int s,
+ const struct afswtch *afp)
+ {
+ struct ifdescreq ifrd;
+
+ strlcpy( ifrd.ifrd_name, ifr.ifr_name, sizeof(ifr.ifr_name) );
+ strlcpy( ifrd.ifrd_descr, val, sizeof(ifrd.ifrd_descr) );
+
+ if (ioctl(s, SIOCSIFDESCR, (caddr_t)&ifrd) < 0) {
+ warn("ioctl (set descr)");
+ return;
+ }
+ }
+
+
/*
* Note: doing an SIOCIGIFFLAGS scribbles on the union portion
* of the ifreq structure, which may confuse other parts of ifconfig.
***************
*** 1121,1126 ****
--- 1139,1145 ----
struct rt_addrinfo info;
int allfamilies, s;
struct ifstat ifs;
+ struct ifdescreq ifrd;
if (afp == NULL) {
allfamilies = 1;
***************
*** 1219,1224 ****
--- 1238,1250 ----
#endif
)
warnx("%s has no %s interface address!", name, afp->af_name);
+
+ /* bartp */
+
+ strncpy(ifrd.ifrd_name, name, sizeof ifrd.ifrd_name);
+ if (ioctl(s, SIOCGIFDESCR, (caddr_t)&ifrd) == 0 && ifrd.ifrd_descr[0]!=0 ) {
+ printf(" descr: %s\n", ifrd.ifrd_descr);
+ }
close(s);
return;
*** sys/sys/sockio.h.orig Wed Apr 7 10:19:49 2004
--- sys/sys/sockio.h Fri Nov 25 15:07:55 2005
***************
*** 80,85 ****
--- 80,90 ----
#define SIOCSIFMAC _IOW('i', 39, struct ifreq) /* set IF MAC label */
#define SIOCSIFNAME _IOW('i', 40, struct ifreq) /* set IF name */
+ /* bartp */
+ #define SIOCSIFDESCR _IOW('i', 41, struct ifdescreq) /* set IF descr */
+ #define SIOCGIFDESCR _IOWR('i', 42, struct ifdescreq) /* get IF descr */
+
+
#define SIOCADDMULTI _IOW('i', 49, struct ifreq) /* add m'cast addr */
#define SIOCDELMULTI _IOW('i', 50, struct ifreq) /* del m'cast addr */
#define SIOCGIFMTU _IOWR('i', 51, struct ifreq) /* get IF mtu */
More information about the freebsd-net
mailing list