Files
vxWorks/h/sys/ioctl.h
2025-08-20 18:25:46 +08:00

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