/*
 *	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 <linux/sockios.h>

#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 */
