1 /* 2 * ioctl's for the Digi Intl. RightSwitch 3 * 4 * These network driver ioctl's are a bit obtuse compared to the usual 5 * ioctl's for a "normal" device driver. Hey, I didn't invent it. 6 * 7 * Typical use: 8 * 9 * struct ifreq ifr; 10 * DGRS_IOCTL ioc; 11 * int x; 12 * 13 * strcpy(ifr.ifr_name, "eth1"); 14 * ifr.ifr_data = (caddr_t) &ioc; 15 * ioc.cmd = DGRS_GETMEM; 16 * ioc.len = sizeof(x); 17 * ioc.data = (caddr_t) &x; 18 * rc = ioctl(fd, DGRSIOCTL, &ifr); 19 * printf("rc=%d mem=%x\n", rc, x); 20 * 21 */ 22 #include <linux/sockios.h> 23 24 #define DGRSIOCTL SIOCDEVPRIVATE 25 26 typedef struct dgrs_ioctl { 27 unsigned short cmd; /* Command to run */ 28 unsigned short len; /* Length of the data buffer */ 29 unsigned char *data; /* Pointer to the data buffer */ 30 unsigned short port; /* port number for command, if needed */ 31 unsigned short filter; /* filter number for command, if needed */ 32 } DGRS_IOCTL; 33 34 /* 35 * Commands for the driver 36 */ 37 #define DGRS_GETMEM 0x01 /* Get the dual port memory address */ 38 #define DGRS_SETFILTER 0x02 /* Set a filter */