ioctl.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:6k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* ioctl.h - socket ioctl header file */
  2. /* Copyright 1984-2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 02l,12oct01,rae  merge from truestack (SIOCGMTU)
  7. 02k,29apr99,pul  Upgraded NPT phase3 code to tor2.0.0
  8. 02j,18mar99,sj   added SIOCSIFASYNCFLAGS
  9. 02i,11aug93,jmm  Changed ioctl.h and socket.h to sys/ioctl.h and sys/socket.h
  10. 02h,22sep92,rrr  added support for c++
  11. 02g,04jul92,jcf  cleaned up.
  12. 02f,26may92,rrr  the tree shuffle
  13. 02e,04oct91,rrr  passed through the ansification filter
  14.   -changed copyright notice
  15. 02d,19aug91,rrr  changed to work with ansi compiler
  16. 02c,24mar91,del  changes to work with gnu960 compiler for i960 port.
  17. 02b,05oct90,shl  fixed copyright notice.
  18. 02a,29apr87,dnw  removed unnecessary junk.
  19.  added header and copyright.
  20. */
  21. #ifndef __INCioctlh
  22. #define __INCioctlh
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26. /* socket i/o controls */
  27. /*
  28.  * Ioctl's have the command encoded in the lower word,
  29.  * and the size of any in or out parameters in the upper
  30.  * word.  The high 2 bits of the upper word are used
  31.  * to encode the in/out status of the parameter; for now
  32.  * we restrict parameters to at most 128 bytes.
  33.  */
  34. #define IOCPARM_MASK 0x7f /* parameters must be < 128 bytes */
  35. #define IOC_VOID 0x20000000 /* no parameters */
  36. #define IOC_OUT 0x40000000 /* copy out parameters */
  37. #define IOC_IN 0x80000000 /* copy in parameters */
  38. #define IOC_INOUT (IOC_IN|IOC_OUT)
  39. /* the 0x20000000 is so we can distinguish new ioctl's from old */
  40. /* had to change macros from 'x' to (x) and had to pass in litterals as 'i'
  41.  * rather than i, because ANSIc doesn't behave in the same manner as
  42.  * the traditional c compilers
  43.  */
  44. #define _IO(x,y) (IOC_VOID|((x)<<8)|y)
  45. #define _IOR(x,y,t) (IOC_OUT|((sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|y)
  46. #define _IOW(x,y,t) (IOC_IN|((sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|y)
  47. /* this should be _IORW, but stdio got there first */
  48. #define _IOWR(x,y,t) (IOC_INOUT|((sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|y)
  49. #define SIOCSHIWAT _IOW('s',  0, int) /* set high watermark */
  50. #define SIOCGHIWAT _IOR('s',  1, int) /* get high watermark */
  51. #define SIOCSLOWAT _IOW('s',  2, int) /* set low watermark */
  52. #define SIOCGLOWAT _IOR('s',  3, int) /* get low watermark */
  53. #define SIOCATMARK _IOR('s',  7, int) /* at oob mark? */
  54. #define SIOCSPGRP _IOW('s',  8, int) /* set process group */
  55. #define SIOCGPGRP _IOR('s',  9, int) /* get process group */
  56. #define SIOCADDRT _IOW('r', 10, struct ortentry) /* add route */
  57. #define SIOCDELRT _IOW('r', 11, struct ortentry) /* delete route */
  58. #if 0 /* OLD XXX */
  59. #define SIOCSIFADDR _IOW('i', 12, struct ifreq) /* set ifnet address */
  60. #define SIOCGIFADDR _IOWR('i',13, struct ifreq) /* get ifnet address */
  61. #define SIOCSIFDSTADDR _IOW('i', 14, struct ifreq) /* set p-p address */
  62. #define SIOCGIFDSTADDR _IOWR('i',15, struct ifreq) /* get p-p address */
  63. #define SIOCSIFFLAGS _IOW('i', 16, struct ifreq) /* set ifnet flags */
  64. #define SIOCGIFFLAGS _IOWR('i',17, struct ifreq) /* get ifnet flags */
  65. #define SIOCGIFBRDADDR _IOWR('i',18, struct ifreq) /* get broadcast addr */
  66. #define SIOCSIFBRDADDR _IOW('i',19, struct ifreq) /* set broadcast addr */
  67. #define SIOCGIFCONF _IOWR('i',20, struct ifconf) /* get ifnet list */
  68. #define SIOCGIFNETMASK _IOWR('i',21, struct ifreq) /* get net addr mask */
  69. #define SIOCSIFNETMASK _IOW('i',22, struct ifreq) /* set net addr mask */
  70. #define SIOCGIFMETRIC _IOWR('i',23, struct ifreq) /* get IF metric */
  71. #define SIOCSIFMETRIC _IOW('i',24, struct ifreq) /* set IF metric */
  72. #define SIOCSARP _IOW('i', 30, struct arpreq) /* set arp entry */
  73. #define SIOCGARP _IOWR('i',31, struct arpreq) /* get arp entry */
  74. #define SIOCDARP _IOW('i', 32, struct arpreq) /* delete arp entry */
  75. #endif 
  76. #define SIOCSIFADDR  _IOW('i', 12, struct ifreq) /* set ifnet address */
  77. #define OSIOCGIFADDR _IOWR('i', 13, struct ifreq) /* get ifnet address */
  78. #define SIOCGIFADDR _IOWR('i', 33, struct ifreq) /* get ifnet address */
  79. #define SIOCSIFDSTADDR  _IOW('i', 14, struct ifreq) /* set p-p address */
  80. #define OSIOCGIFDSTADDR _IOWR('i', 15, struct ifreq) /* get p-p address */
  81. #define SIOCGIFDSTADDR _IOWR('i', 34, struct ifreq) /* get p-p address */
  82. #define SIOCSIFFLAGS  _IOW('i', 16, struct ifreq) /* set ifnet flags */
  83. #define SIOCGIFFLAGS _IOWR('i', 17, struct ifreq) /* get ifnet flags */
  84. #define OSIOCGIFBRDADDR _IOWR('i', 18, struct ifreq) /* get broadcast addr */
  85. #define SIOCGIFBRDADDR _IOWR('i', 35, struct ifreq) /* get broadcast addr */
  86. #define SIOCSIFBRDADDR  _IOW('i', 19, struct ifreq) /* set broadcast addr */
  87. #define SIOCSARP _IOW('i', 30, struct arpreq) /* set arp entry */
  88. #define SIOCGARP _IOWR('i',31, struct arpreq) /* get arp entry */
  89. #define SIOCDARP _IOW('i', 32, struct arpreq) /* delete arp entry */
  90. #define OSIOCGIFCONF _IOWR('i', 20, struct ifconf) /* get ifnet list */
  91. #define SIOCGIFCONF _IOWR('i', 36, struct ifconf) /* get ifnet list */
  92. #define OSIOCGIFNETMASK _IOWR('i', 21, struct ifreq) /* get net addr mask */
  93. #define SIOCGIFNETMASK _IOWR('i', 37, struct ifreq) /* get net addr mask */
  94. #define SIOCSIFNETMASK  _IOW('i', 22, struct ifreq) /* set net addr mask */
  95. #define SIOCGIFMETRIC _IOWR('i', 23, struct ifreq) /* get IF metric */
  96. #define SIOCSIFMETRIC  _IOW('i', 24, struct ifreq) /* set IF metric */
  97. #define SIOCDIFADDR  _IOW('i', 25, struct ifreq) /* delete IF addr */
  98. #define SIOCAIFADDR  _IOW('i', 26, struct ifaliasreq)/* add/chg IF alias */
  99. #define SIOCADDMULTI  _IOW('i', 49, struct ifreq) /* add m'cast addr */
  100. #define SIOCDELMULTI  _IOW('i', 50, struct ifreq) /* del m'cast addr */
  101. #define SIOCGETMULTI     _IOWR('i', 51, struct ifmreq)  /* get m'cast addr */
  102. #define SIOCSIFMTU  _IOW('i', 127, struct ifreq) /* set ifnet mtu */
  103. #define SIOCGIFMTU _IOWR('i', 126, struct ifreq) /* get ifnet mtu */
  104. #define SIOCSIFASYNCMAP  _IOW('i', 125, struct ifreq) /* set ppp asyncmap */
  105. #define SIOCGIFASYNCMAP _IOWR('i', 124, struct ifreq) /* get ppp asyncmap */
  106. #define SIOCSIFASYNCFLAGS _IOWR('i', 123, struct ifreq) /* intf. flags changed*/
  107. /* Duplicate of END ioctl to prevent include file dependencies. */
  108. #define SIOCGMTU _IOR('e', 26, MTU_QUERY *)  /* get mtu for PMP case */
  109. #ifdef __cplusplus
  110. }
  111. #endif
  112. #endif /* __INCioctlh */