2008/10/21 Eduardo Meyer <dudu.meyer@gmail.com>:> Is there another way to check if a certain interface supports polling,
> other than reading polling(4)? I would like to have a script to check
> it, issuing something like
>
> ifconfig -v -m <nic>
>
> How can I list all NIC capabilities? Would polling be listed if the
> driver supports?
>
I don't know if ifconfig supports listing NIC capabilities, but you can
always add this. Something like:
--- ifconfig.c.orig 2008-10-22 00:50:03.000000000 +0400
+++ ifconfig.c 2008-10-22 01:28:21.000000000 +0400
@@ -708,6 +708,19 @@
}
void
+getifcaps(const char *vname, int value, int s, const struct afswtch *afp)
+{
+ int flags;
+
+ if (ioctl(s, SIOCGIFCAP, (caddr_t)&ifr) < 0) {
+ Perror("ioctl (SIOCGIFCAP)");
+ exit(1);
+ }
+ flags = ifr.ifr_reqcap;
+ printf("Capabilities: %x\n", flags);
+}
+
+void
setifcap(const char *vname, int value, int s, const struct afswtch *afp)
{
int flags;
@@ -1009,6 +1022,7 @@
DEF_CMD("-monitor", -IFF_MONITOR, setifflags),
DEF_CMD("staticarp", IFF_STATICARP, setifflags),
DEF_CMD("-staticarp", -IFF_STATICARP, setifflags),
+ DEF_CMD("caps", 0, getifcaps),
DEF_CMD("rxcsum", IFCAP_RXCSUM, setifcap),
DEF_CMD("-rxcsum", -IFCAP_RXCSUM, setifcap),
DEF_CMD("txcsum", IFCAP_TXCSUM, setifcap),
$ diff -u ifconfig.h.orig ifconfig.h
--- ifconfig.h.orig 2008-04-27 20:12:43.000000000 +0400
+++ ifconfig.h 2008-10-22 00:56:14.000000000 +0400
@@ -134,6 +134,7 @@
extern int verbose;
void setifcap(const char *, int value, int s, const struct afswtch *);
+void getifcaps(const char *, int value, int s, const struct afswtch *);
void Perror(const char *cmd);
void printb(const char *s, unsigned value, const char *bits);
--
wbr,
pluknet