/* * ioctl's for the Digi Intl. RightSwitch * * These network driver ioctl's are a bit obtuse compared to the usual * ioctl's for a "normal" device driver. Hey, I didn't invent it. * * Typical use: * * struct ifreq ifr; * DGRS_IOCTL ioc; * int x; * * strcpy(ifr.ifr_name, "eth1"); * ifr.ifr_data = (caddr_t) &ioc; * ioc.cmd = DGRS_GETMEM; * ioc.len = sizeof(x); * ioc.data = (caddr_t) &x; * rc = ioctl(fd, DGRSIOCTL, &ifr); * printf("rc=%d mem=%x\n", rc, x); * */ #include #define DGRSIOCTL SIOCDEVPRIVATE typedef struct dgrs_ioctl { unsigned short cmd; /* Command to run */ unsigned short len; /* Length of the data buffer */ unsigned char __user *data; /* Pointer to the data buffer */ unsigned short port; /* port number for command, if needed */ unsigned short filter; /* filter number for command, if needed */ } DGRS_IOCTL; /* * Commands for the driver */ #define DGRS_GETMEM 0x01 /* Get the dual port memory address */ #define DGRS_SETFILTER 0x02 /* Set a filter */