165 lines
7.3 KiB
C
165 lines
7.3 KiB
C
/* ioctl.h - socket ioctl header file */
|
|
|
|
/* Copyright 1984-2001 Wind River Systems, Inc. */
|
|
|
|
/*
|
|
modification history
|
|
--------------------
|
|
02n,22jul05,kch Added SIOCMUXL2PASSTHRU for Layer 2 support.
|
|
02m,24feb05,dlk Added SIOCMUXPASSTHRU support. Increase maximum
|
|
ioctl argument size to 4095 bytes. Added IOCPARM_MAX
|
|
and IOCPARM_LEN macros, and other items from ioccom.h.
|
|
02l,12oct01,rae merge from truestack (SIOCGMTU)
|
|
02k,29apr99,pul Upgraded NPT phase3 code to tor2.0.0
|
|
02j,18mar99,sj added SIOCSIFASYNCFLAGS
|
|
02i,11aug93,jmm Changed ioctl.h and socket.h to sys/ioctl.h and sys/socket.h
|
|
02h,22sep92,rrr added support for c++
|
|
02g,04jul92,jcf cleaned up.
|
|
02f,26may92,rrr the tree shuffle
|
|
02e,04oct91,rrr passed through the ansification filter
|
|
-changed copyright notice
|
|
02d,19aug91,rrr changed to work with ansi compiler
|
|
02c,24mar91,del changes to work with gnu960 compiler for i960 port.
|
|
02b,05oct90,shl fixed copyright notice.
|
|
02a,29apr87,dnw removed unnecessary junk.
|
|
added header and copyright.
|
|
*/
|
|
|
|
#ifndef __INCioctlh
|
|
#define __INCioctlh
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* socket i/o controls */
|
|
|
|
/*
|
|
* Ioctl's have the command encoded in the lower word,
|
|
* and the size of any in or out parameters in the upper
|
|
* word. The high 2 bits of the upper word are used
|
|
* to encode the in/out status of the parameter; for now
|
|
* we restrict parameters to at most 4095 bytes, reserving
|
|
* the 0x10000000 bit for other use.
|
|
*/
|
|
#define IOCPARM_MASK 0xfff /* parameters must be < 4096 bytes */
|
|
#define IOCPARM_MAX 0xfff /* absolute maximum param size */
|
|
#define IOC_VOID 0x20000000 /* no parameters */
|
|
#define IOC_OUT 0x40000000 /* copy out parameters */
|
|
#define IOC_IN 0x80000000 /* copy in parameters */
|
|
#define IOC_INOUT (IOC_IN|IOC_OUT)
|
|
/* the 0x20000000 is so we can distinguish new ioctl's from old */
|
|
|
|
#define IOCPARM_LEN(x) ((((u_long)(x)) >> 16) & IOCPARM_MAX)
|
|
#define IOCBASECMD(x) ((x) & ~(IOCPARM_MASK << 16))
|
|
#define IOCGROUP(x) (((x) >> 8) & 0xff)
|
|
|
|
#define _IOC(inout,group,num,len) \
|
|
((unsigned long)(inout | ((len & IOCPARM_MASK) << 16) | \
|
|
((group) << 8) | (num)))
|
|
#define _IO(g,n) _IOC(IOC_VOID, (g), (n), 0)
|
|
#define _IOR(g,n,t) _IOC(IOC_OUT, (g), (n), sizeof(t))
|
|
#define _IOW(g,n,t) _IOC(IOC_IN, (g), (n), sizeof(t))
|
|
/* this should be _IORW, but stdio got there first */
|
|
#define _IOWR(g,n,t) _IOC(IOC_INOUT, (g), (n), sizeof(t))
|
|
|
|
/*
|
|
* These definitions are primarily to support SIOCMUXPASSTHRU.
|
|
* It's assumed that tunnellable IOCTLs will have IOC_USER set.
|
|
* Note that IOC_USER overlaps the high bit of the type (x) byte.
|
|
* When this byte is an ASCII character, its high bit will be 0;
|
|
* but if the high bit of the type byte x is set, _IOR(x,y,t)
|
|
* and _IORU(x,y,t) (for instance) will be indistinguishable.
|
|
*/
|
|
|
|
#define IOC_USER 0x8000 /* tunnellable from RTP space */
|
|
#define _IOU(g,n) (IOC_USER|_IO(g,n))
|
|
#define _IORU(g,n,t) (IOC_USER|_IOR(g,n,t))
|
|
#define _IOWU(g,n,t) (IOC_USER|_IOW(g,n,t))
|
|
#define _IOWRU(g,n,t) (IOC_USER|_IOWR(g,n,t))
|
|
|
|
|
|
#define SIOCSHIWAT _IOW('s', 0, int) /* set high watermark */
|
|
#define SIOCGHIWAT _IOR('s', 1, int) /* get high watermark */
|
|
#define SIOCSLOWAT _IOW('s', 2, int) /* set low watermark */
|
|
#define SIOCGLOWAT _IOR('s', 3, int) /* get low watermark */
|
|
#define SIOCATMARK _IOR('s', 7, int) /* at oob mark? */
|
|
#define SIOCSPGRP _IOW('s', 8, int) /* set process group */
|
|
#define SIOCGPGRP _IOR('s', 9, int) /* get process group */
|
|
|
|
#define SIOCADDRT _IOW('r', 10, struct ortentry) /* add route */
|
|
#define SIOCDELRT _IOW('r', 11, struct ortentry) /* delete route */
|
|
|
|
#if 0 /* OLD XXX */
|
|
#define SIOCSIFADDR _IOW('i', 12, struct ifreq) /* set ifnet address */
|
|
#define SIOCGIFADDR _IOWR('i',13, struct ifreq) /* get ifnet address */
|
|
#define SIOCSIFDSTADDR _IOW('i', 14, struct ifreq) /* set p-p address */
|
|
#define SIOCGIFDSTADDR _IOWR('i',15, struct ifreq) /* get p-p address */
|
|
#define SIOCSIFFLAGS _IOW('i', 16, struct ifreq) /* set ifnet flags */
|
|
#define SIOCGIFFLAGS _IOWR('i',17, struct ifreq) /* get ifnet flags */
|
|
#define SIOCGIFBRDADDR _IOWR('i',18, struct ifreq) /* get broadcast addr */
|
|
#define SIOCSIFBRDADDR _IOW('i',19, struct ifreq) /* set broadcast addr */
|
|
#define SIOCGIFCONF _IOWR('i',20, struct ifconf) /* get ifnet list */
|
|
#define SIOCGIFNETMASK _IOWR('i',21, struct ifreq) /* get net addr mask */
|
|
#define SIOCSIFNETMASK _IOW('i',22, struct ifreq) /* set net addr mask */
|
|
#define SIOCGIFMETRIC _IOWR('i',23, struct ifreq) /* get IF metric */
|
|
#define SIOCSIFMETRIC _IOW('i',24, struct ifreq) /* set IF metric */
|
|
|
|
#define SIOCSARP _IOW('i', 30, struct arpreq) /* set arp entry */
|
|
#define SIOCGARP _IOWR('i',31, struct arpreq) /* get arp entry */
|
|
#define SIOCDARP _IOW('i', 32, struct arpreq) /* delete arp entry */
|
|
#endif
|
|
|
|
#define SIOCSIFADDR _IOW('i', 12, struct ifreq) /* set ifnet address */
|
|
#define OSIOCGIFADDR _IOWR('i', 13, struct ifreq) /* get ifnet address */
|
|
#define SIOCGIFADDR _IOWR('i', 33, struct ifreq) /* get ifnet address */
|
|
#define SIOCSIFDSTADDR _IOW('i', 14, struct ifreq) /* set p-p address */
|
|
#define OSIOCGIFDSTADDR _IOWR('i', 15, struct ifreq) /* get p-p address */
|
|
#define SIOCGIFDSTADDR _IOWR('i', 34, struct ifreq) /* get p-p address */
|
|
#define SIOCSIFFLAGS _IOW('i', 16, struct ifreq) /* set ifnet flags */
|
|
#define SIOCGIFFLAGS _IOWR('i', 17, struct ifreq) /* get ifnet flags */
|
|
#define OSIOCGIFBRDADDR _IOWR('i', 18, struct ifreq) /* get broadcast addr */
|
|
#define SIOCGIFBRDADDR _IOWR('i', 35, struct ifreq) /* get broadcast addr */
|
|
#define SIOCSIFBRDADDR _IOW('i', 19, struct ifreq) /* set broadcast addr */
|
|
#define SIOCSARP _IOW('i', 30, struct arpreq) /* set arp entry */
|
|
#define SIOCGARP _IOWR('i',31, struct arpreq) /* get arp entry */
|
|
#define SIOCDARP _IOW('i', 32, struct arpreq) /* delete arp entry */
|
|
|
|
#define OSIOCGIFCONF _IOWR('i', 20, struct ifconf) /* get ifnet list */
|
|
#define SIOCGIFCONF _IOWR('i', 36, struct ifconf) /* get ifnet list */
|
|
#define OSIOCGIFNETMASK _IOWR('i', 21, struct ifreq) /* get net addr mask */
|
|
#define SIOCGIFNETMASK _IOWR('i', 37, struct ifreq) /* get net addr mask */
|
|
#define SIOCSIFNETMASK _IOW('i', 22, struct ifreq) /* set net addr mask */
|
|
#define SIOCGIFMETRIC _IOWR('i', 23, struct ifreq) /* get IF metric */
|
|
#define SIOCSIFMETRIC _IOW('i', 24, struct ifreq) /* set IF metric */
|
|
#define SIOCDIFADDR _IOW('i', 25, struct ifreq) /* delete IF addr */
|
|
#define SIOCAIFADDR _IOW('i', 26, struct ifaliasreq)/* add/chg IF alias */
|
|
|
|
#define SIOCADDMULTI _IOW('i', 49, struct ifreq) /* add m'cast addr */
|
|
#define SIOCDELMULTI _IOW('i', 50, struct ifreq) /* del m'cast addr */
|
|
#define SIOCGETMULTI _IOWR('i', 51, struct ifmreq) /* get m'cast addr */
|
|
|
|
|
|
#define SIOCSIFMTU _IOW('i', 127, struct ifreq) /* set ifnet mtu */
|
|
#define SIOCGIFMTU _IOWR('i', 126, struct ifreq) /* get ifnet mtu */
|
|
#define SIOCSIFASYNCMAP _IOW('i', 125, struct ifreq) /* set ppp asyncmap */
|
|
#define SIOCGIFASYNCMAP _IOWR('i', 124, struct ifreq) /* get ppp asyncmap */
|
|
#define SIOCSIFASYNCFLAGS _IOWR('i', 123, struct ifreq) /* intf. flags changed*/
|
|
|
|
#define SIOCMUXPASSTHRU _IOW('e', 122, MUX_PASSTHRU) /* tunnel ioctl to
|
|
mux layer */
|
|
|
|
#define SIOCMUXL2PASSTHRU _IOW('e', 123, MUX_PASSTHRU) /* tunnel L2 ioctl to
|
|
mux layer */
|
|
|
|
/* Duplicate of END ioctl to prevent include file dependencies. */
|
|
|
|
#define SIOCGMTU _IOR('e', 26, MTU_QUERY *) /* get mtu for PMP case */
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __INCioctlh */
|