termios.inc 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615
  1. {$PACKRECORDS C}
  2. const
  3. CBELL = #7;
  4. { delete }
  5. CDEL = #127;
  6. { ^D }
  7. CEOF = #4;
  8. { ^H }
  9. CERASE = #8;
  10. { back-slash }
  11. CESC = '\';
  12. { ^L }
  13. CFORM = #12;
  14. { ^C }
  15. CINTR = #3;
  16. { ^U }
  17. CKILL = #21;
  18. { null char }
  19. CNUL = #0;
  20. { ^\ }
  21. CQUIT = #28;
  22. { ^Q }
  23. CSTART = #17;
  24. { ^S }
  25. CSTOP = #19;
  26. { ^K }
  27. CVT = #11;
  28. {
  29. * Ioctl control packet
  30. }
  31. NCC = 8;
  32. {
  33. * Structure, defines for setting page length
  34. }
  35. { Set Page Length (Ioctl TCSLEN) }
  36. const
  37. PAGE_SETL = 04;
  38. { Paging Ioctl Command Mask (TCSLEN) }
  39. PAGE_MSK = 03;
  40. { Enable Paging (TCSLEN) }
  41. PAGE_ON = 01;
  42. { Disable Paging (TCSLEN) }
  43. PAGE_OFF = 02;
  44. {$ifndef PAGE_ENB}
  45. { For compatibility with older version }
  46. const
  47. PAGE_ENB = PAGE_ON;
  48. {$endif}
  49. type
  50. Ptty_page = ^tty_page;
  51. tty_page = record
  52. tp_flags : AnsiChar;
  53. tp_slen : byte;
  54. end;
  55. twinsize = record
  56. ws_row, ws_col, ws_xpixel, ws_ypixel: cushort;
  57. end;
  58. const
  59. IOC_VOID = $20000000;
  60. IOC_OUT = $40000000;
  61. IOC_IN = $40000000 shl 1;
  62. IOCPARM_MASK = $7f;
  63. TIOCGETD = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 0; { get line discipline }
  64. TIOCSETD = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 1; { set line discipline }
  65. TIOCHPCL = IOC_VOID or (ord('t') shl 8) or 2; { hang up on last close }
  66. TIOCMODG = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 3; { get modem control state }
  67. TIOCMODS = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 4; { set modem control state }
  68. TIOCM_LE = 0001; { line enable }
  69. TIOCM_DTR = 0002; { data terminal ready }
  70. TIOCM_RTS = 0004; { request to send }
  71. TIOCM_ST = 0008; { secondary transmit }
  72. TIOCM_SR = 0016; { secondary receive }
  73. TIOCM_CTS = 0032; { clear to send }
  74. TIOCM_CAR = 0064; { carrier detect }
  75. TIOCM_CD = TIOCM_CAR;
  76. TIOCM_RNG = 0128; { ring }
  77. TIOCM_RI = TIOCM_RNG;
  78. TIOCM_DSR = 0256; { data set ready }
  79. // TIOCGETP = IOC_OUT or ((sizeof(struct sgttyb) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 8{ get parameters -- gtty }
  80. // TIOCSETP = IOC_IN or ((sizeof(struct sgttyb) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 9{ set parameters -- stty }
  81. // TIOCSETN = IOC_IN or ((sizeof(struct sgttyb) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 10{ as above, but no flushtty }
  82. TIOCEXCL = IOC_VOID or (ord('t') shl 8) or 13; { set exclusive use of tty }
  83. TIOCNXCL = IOC_VOID or (ord('t') shl 8) or 14; { reset exclusive use of tty }
  84. TIOCFLUSH = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 16; { flush buffers }
  85. // TIOCSETC = IOC_IN or ((sizeof(struct tchars) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 17{ set special characters }
  86. // TIOCGETC = IOC_OUT or ((sizeof(struct tchars) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 18{ get special characters }
  87. TANDEM = $00000001; { send stopc on out q full }
  88. CBREAK = $00000002; { half-cooked mode }
  89. LCASE = $00000004; { simulate lower case }
  90. ECHO = $00000008; { echo input }
  91. CRMOD = $00000010; { map \r to \r\n on output }
  92. RAW = $00000020; { no i/o processing }
  93. ODDP = $00000040; { get/send odd parity }
  94. EVENP = $00000080; { get/send even parity }
  95. ANYP = $000000c0; { get any parity/send none }
  96. CRDELAY = $00000300; { \r delay }
  97. CR0 = $00000000;
  98. CR1 = $00000100; { tn 300 }
  99. CR2 = $00000200; { tty 37 }
  100. CR3 = $00000300; { concept 100 }
  101. TBDELAY = $00000c00; { horizontal tab delay }
  102. TAB0 = $00000000;
  103. TAB1 = $00000400; { tty 37 }
  104. TAB2 = $00000800;
  105. XTABS = $00000c00; { expand tabs on output }
  106. BSDELAY = $00001000; { \b delay }
  107. BS0 = $00000000;
  108. BS1 = $00001000;
  109. VTDELAY = $00002000; { vertical tab delay }
  110. FF0 = $00000000;
  111. FF1 = $00002000; { tty 37 }
  112. NLDELAY = $0000c000; { \n delay }
  113. NL0 = $00000000;
  114. NL1 = $00004000; { tty 37 }
  115. NL2 = $00008000; { vt05 }
  116. NL3 = $0000c000;
  117. ALLDELAY = (NLDELAY or TBDELAY or CRDELAY or VTDELAY or BSDELAY);
  118. TOSTOP = $00010000; { SIGSTOP on bckgnd output }
  119. PRTERA = $00020000; { \ ... / erase }
  120. CRTERA = $00040000; { " \b " to wipe out char }
  121. TILDE = $00080000; { hazeltine tilde kludge }
  122. FLUSHO = $00100000; { flush output to terminal }
  123. LITOUT = $00200000; { literal output }
  124. CRTBS = $00400000; { do backspacing for crt }
  125. MDMBUF = $00800000; { dtr pacing }
  126. NOHANG = $01000000; { no SIGHUP on carrier drop }
  127. L001000 = $02000000;
  128. CRTKIL = $04000000; { kill line with " \b " }
  129. PASS8 = $08000000;
  130. CTLECH = $10000000; { echo control chars as ^X }
  131. PENDIN = $20000000; { tp->t_rawq needs reread }
  132. DECCTQ = $40000000; { only ^Q starts after ^S }
  133. NOFLUSH = $80000000; { no output flush on signal }
  134. { SYS V REL. 4 PTY IOCTLs }
  135. UNLKPT = IOC_VOID or (ord('t') shl 8) or 70; { unlock slave pty }
  136. ISPTM = IOC_VOID or (ord('t') shl 8) or 71; { ret. maj+min of pty master }
  137. ISPTS = IOC_VOID or (ord('t') shl 8) or 73; { return maj+min of slave }
  138. GRTPT = IOC_VOID or (ord('t') shl 8) or 74; { grantpt slave pty}
  139. RLOGIND = IOC_VOID or (ord('t') shl 8) or 75; { for rlogind protocol in ptydd }
  140. TELNETDP = IOC_VOID or (ord('t') shl 8) or 76; { for telnetd protocol in ptydd }
  141. TIOCCONS = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 98; { become virtual console }
  142. TIOCGSID = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 72; { get the tty session id }
  143. TIOCLBIS = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 127; { bis local mode bits }
  144. TIOCLBIC = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 126; { bic local mode bits }
  145. TIOCLSET = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 125; { set entire mode word }
  146. TIOCLGET = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 124; { get local modes }
  147. LCRTBS = (CRTBS>>16);
  148. LPRTERA = (PRTERA>>16);
  149. LCRTERA = (CRTERA>>16);
  150. LTILDE = (TILDE>>16);
  151. LMDMBUF = (MDMBUF>>16);
  152. LLITOUT = (LITOUT>>16);
  153. LTOSTOP = (TOSTOP>>16);
  154. LFLUSHO = (FLUSHO>>16);
  155. LNOHANG = (NOHANG>>16);
  156. LCRTKIL = (CRTKIL>>16);
  157. LPASS8 = (PASS8>>16);
  158. LCTLECH = (CTLECH>>16);
  159. LPENDIN = (PENDIN>>16);
  160. LDECCTQ = (DECCTQ>>16);
  161. LNOFLSH = (NOFLUSH>>16);
  162. TIOCSBRK = IOC_VOID or (ord('t') shl 8) or 123; { set break bit }
  163. TIOCCBRK = IOC_VOID or (ord('t') shl 8) or 122; { clear break bit }
  164. TIOCSDTR = IOC_VOID or (ord('t') shl 8) or 121; { set data terminal ready }
  165. TIOCCDTR = IOC_VOID or (ord('t') shl 8) or 120; { clear data terminal ready }
  166. TIOCGPGRP = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 119; { get process group }
  167. TIOCSPGRP = cint(IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 118); { set process group }
  168. // TIOCSLTC = IOC_IN or ((sizeof(struct ltchars) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 117{ set local special chars }
  169. // TIOCGLTC = IOC_OUT or ((sizeof(struct ltchars) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 116{ get local special chars }
  170. TIOCOUTQ = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 115; { output queue size }
  171. TIOCSTI = IOC_IN or ((sizeof(AnsiChar) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 114; { simulate terminal input }
  172. TIOCNOTTY = IOC_VOID or (ord('t') shl 8) or 113; { void tty association }
  173. TIOCPKT = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 112; { pty: set/clear packet mode }
  174. TIOCPKT_DATA = $00; { data packet }
  175. TIOCPKT_FLUSHREAD = $01; { flush packet }
  176. TIOCPKT_FLUSHWRITE = $02; { flush packet }
  177. TIOCPKT_STOP = $04; { stop output }
  178. TIOCPKT_START = $08; { start output }
  179. TIOCPKT_NOSTOP = $10; { no more ^S, ^Q }
  180. TIOCPKT_DOSTOP = $20; { now do ^S ^Q }
  181. TIOCSTOP = IOC_VOID or (ord('t') shl 8) or 111; { stop output, like ^S }
  182. TIOCSTART = IOC_VOID or (ord('t') shl 8) or 110; { start output, like ^Q }
  183. TIOCMSET = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 109; { set all modem bits }
  184. TIOCMBIS = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 108; { bis modem bits }
  185. TIOCMGET = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 106; { get all modem bits }
  186. TIOCREMOTE = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 105; { remote input editing }
  187. TIOCGWINSZ = IOC_OUT or ((sizeof(twinsize) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 104; { get window size }
  188. TIOCSWINSZ = IOC_IN or ((sizeof(twinsize) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 103; { set window size }
  189. TIOCUCNTL = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 102; { pty: set/clr usr cntl mode }
  190. TIOCMIWAIT = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 100; { wait for modem stat change }
  191. { SLIP (Serial Line IP) ioctl's }
  192. SLIOCGUNIT = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 101; { get slip unit number }
  193. SLIOCSFLAGS = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 89; { set configuration flags }
  194. SLIOCGFLAGS = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 90; { get configuration flags }
  195. SLIOCSATTACH = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('t') shl 8) or 91; { Attach slip i.f. to tty }
  196. // UIOCCMD(n) = IOC_VOID or (ord('u') shl 8) or n; { usr cntl op "n" }
  197. OTTYDISC = 0; { old, v7 std tty driver }
  198. NETLDISC = 1; { line discip for berk net }
  199. NTTYDISC = 2; { new tty discipline }
  200. TABLDISC = 3; { tablet discipline }
  201. SLIPDISC = 4; { serial IP discipline }
  202. FIOCLEX = IOC_VOID or (ord('f') shl 8) or 1; { set close on exec }
  203. FIONCLEX = IOC_VOID or (ord('f') shl 8) or 2; { clear close on exec }
  204. { another local }
  205. FIONREAD = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('f') shl 8) or 127; { get # bytes to read }
  206. FIONBIO = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('f') shl 8) or 126; { set/clear non-blocking i/o }
  207. FIOASYNC = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('f') shl 8) or 125; { set/clear async i/o }
  208. FIOSETOWN = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('f') shl 8) or 124; { set owner }
  209. FIOGETOWN = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('f') shl 8) or 123; { get owner }
  210. FIOASYNCQX = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('f') shl 8) or 122; { set/clear async queueing }
  211. { socket i/o controls }
  212. SIOCSHIWAT = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('s') shl 8) or 0; { set high watermark }
  213. SIOCGHIWAT = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('s') shl 8) or 1; { get high watermark }
  214. SIOCSLOWAT = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('s') shl 8) or 2; { set low watermark }
  215. SIOCGLOWAT = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('s') shl 8) or 3; { get low watermark }
  216. SIOCATMARK = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('s') shl 8) or 7; { at oob mark? }
  217. SIOCSPGRP = IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('s') shl 8) or 8; { set process group }
  218. SIOCGPGRP = IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('s') shl 8) or 9; { get process group }
  219. // SIOCADDRT = cint(IOC_IN or ((sizeof(struct ortentry) and IOCPARM_MASK) shl 16) or (ord('r') shl 8) or 10); { add route }
  220. // SIOCDELRT = cint(IOC_IN or ((sizeof(struct ortentry) and IOCPARM_MASK) shl 16) or (ord('r') shl 8) or 11); { delete route }
  221. // SIOCSIFADDR = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 12); { set ifnet address }
  222. // OSIOCGIFADDR = (int)_IOWR('i',13, struct oifreq); { get ifnet address }
  223. // SIOCGIFADDR = (int)_IOWR('i',33, struct oifreq); { get ifnet address }
  224. SIOCGIFADDRS = cint(IOC_VOID or (ord('i') shl 8) or 140); { get ifnet addresses for an if}
  225. // SIOCSIFDSTADDR = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 14); { set p-p address }
  226. // OSIOCGIFDSTADDR = (int)_IOWR('i',15, struct oifreq); { get p-p address }
  227. // SIOCGIFDSTADDR = (int)_IOWR('i',34, struct oifreq); { get p-p address }
  228. // SIOCSIFFLAGS = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 16); { set ifnet flags }
  229. // SIOCGIFFLAGS = (int)_IOWR('i',17, struct oifreq); { get ifnet flags }
  230. // OSIOCGIFBRDADDR = (int)_IOWR('i',18, struct oifreq); { get broadcast addr }
  231. // SIOCGIFBRDADDR = (int)_IOWR('i',35, struct oifreq); { get broadcast addr }
  232. // SIOCSIFBRDADDR = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 19); { set broadcast addr }
  233. // OSIOCGIFCONF = (int)_IOWR('i',20, struct ifconf); { get ifnet list }
  234. // CSIOCGIFCONF = (int)_IOWR('i',36, struct ifconf); { get ifnet list }
  235. // SIOCGIFCONF = (int)_IOWR('i',69, struct ifconf); { get ifnet list }
  236. // OSIOCGIFNETMASK = (int)_IOWR('i',21, struct oifreq); { get net addr mask }
  237. // SIOCGIFNETMASK = (int)_IOWR('i',37, struct oifreq); { get net addr mask }
  238. // SIOCSIFNETMASK = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 22); { set net addr mask }
  239. // SIOCGIFMETRIC = (int)_IOWR('i',23, struct oifreq); { get IF metric }
  240. // SIOCSIFMETRIC = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 24); { set IF metric }
  241. // SIOCDIFADDR = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 25); { delete IF addr }
  242. // SIOCAIFADDR = cint(IOC_IN or ((sizeof(struct ifaliasreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 26); { add/chg IF alias }
  243. // SIOCSIFSUBCHAN = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 27); { set subchannel adr.}
  244. // SIOCSIFNETDUMP = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 28); { set netdump fastwrt}
  245. // SIOUPDROUTE = cint(IOC_IN or ((sizeof(struct ifaliasreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 29); { Update Routing table }
  246. // SIOCSARP = cint(IOC_IN or ((sizeof(struct arpreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 30); { set arp entry }
  247. // OSIOCGARP = (int)_IOWR('i',31, struct arpreq); { get arp entry }
  248. // SIOCGARP = (int)_IOWR('i',38, struct arpreq); { get arp entry }
  249. // SIOCDARP = cint(IOC_IN or ((sizeof(struct arpreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 32); { delete arp entry }
  250. // SIOCSIFOPTIONS = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 41); { set ifnet options }
  251. // SIOCGIFOPTIONS = (int)_IOWR('i',42, struct oifreq); { get ifnet options }
  252. // SIOCADDMULTI = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 49); { add multicast addr }
  253. // SIOCDELMULTI = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 50); { del multicast addr }
  254. // SIOCGETVIFCNT = (int)_IOWR('u', 51, struct sioc_vif_req){ vif pkt cnt }
  255. // SIOCGETSGCNT = (int)_IOWR('u', 52, struct sioc_sg_req); { s,g pkt cnt }
  256. // SIOCADDNETID = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 87); { set netids }
  257. // SIOCSIFMTU = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 88); { set mtu }
  258. // SIOCGIFMTU = (int)_IOWR('i',86, struct oifreq); { get mtu }
  259. // SIOCSNETOPT = cint(IOC_IN or ((sizeof(struct optreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 90); { set network option }
  260. // SIOCGNETOPT = (int)_IOWR('i', 91, struct optreq); { get network option }
  261. // SIOCDNETOPT = (int)_IOWR('i', 128, struct optreq); { set default }
  262. // SIOCGNETOPT1 = (int)_IOWR('i', 129, struct optreq1); { get network option }
  263. // SIOCGLOADF = (int)_IOWR('i', 130, int); { get flag: if loadtime passed }
  264. // SIOCSLOADF = (int)_IOWR('i', 131, int); { set flag: if loadtime passed }
  265. // SIOCGTUNEPHASE = (int)_IOWR('i', 138, int); { get tuning_phase }
  266. // SIOCSX25XLATE = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 99); { set xlate tab }
  267. // SIOCGX25XLATE = (int)_IOWR('i',100, struct oifreq); { get xlate tab }
  268. // SIOCDX25XLATE = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 101); { delete xlate tab }
  269. // SIOCIFDETACH = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 102); { detach an ifnet }
  270. // SIOCIFATTACH = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 103); { attach an ifnet }
  271. SIOCGNMTUS = cint(IOC_VOID or (ord('i') shl 8) or 110); { get NMTUs }
  272. SIOCGETMTUS = cint(IOC_VOID or (ord('i') shl 8) or 111); { get common_mtus }
  273. SIOCADDMTU = cint(IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 112); { add mtu }
  274. SIOCDELMTU = cint(IOC_IN or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 113); { delete mtu }
  275. SIOCGIFGIDLIST = cint(IOC_VOID or (ord('i') shl 8) or 104); { get gidlist }
  276. SIOCSIFGIDLIST = cint(IOC_VOID or (ord('i') shl 8) or 105); { set gidlist }
  277. SIOCGSIZIFCONF = cint(IOC_OUT or ((sizeof(cint) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 106); { get size for SIOCGIFCONF }
  278. // SIOCIF_ATM_UBR = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 120); { set ubr rate }
  279. // SIOCIF_ATM_SNMPARP = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 121); { atm snmp arp }
  280. // SIOCIF_ATM_IDLE = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 122); { set idle time }
  281. // SIOCIF_ATM_DUMPARP = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 123); { atm dump arp }
  282. // SIOCIF_ATM_SVC = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 124); { atmif init }
  283. // SIOCIF_ATM_DARP = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 125); { del atmarp }
  284. // SIOCIF_ATM_GARP = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 126); { get atmarp }
  285. // SIOCIF_ATM_SARP = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 127); { set atmarp };
  286. { For IP over Infiniband }
  287. // SIOCIF_IB_DUMP_ARP = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 128); { ib dump arp }
  288. // SIOCIF_IB_DEL_ARP = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 129); { if_ib del ibarp }
  289. // SIOCIF_IB_GET_ARP = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 130); { get ibarp }
  290. // SIOCIF_IB_SET_ARP = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 131); { set ibarp }
  291. // SIOCIF_IB_SET_PKEY = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 132); { set ib port pkey value }
  292. // SIOCIFGETPKEY = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 101); { set ubr rate }
  293. // SIOCIF_IB_SET_PORT = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 133); { set ubr rate }
  294. // SIOCIF_IB_SET_QSIZE = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 134); { set ib qsize }
  295. // SIOCIF_IB_RESIZE_CQ = cint(IOC_IN or ((sizeof(struct ifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 135); { set resize IB CQ }
  296. // SIOCGISNO = (int)_IOWR('i',107, struct oifreq); { get IF network options }
  297. // SIOCSISNO = cint(IOC_IN or ((sizeof(struct oifreq) and IOCPARM_MASK) shl 16) or (ord('i') shl 8) or 108); { set IF network options }
  298. // SIOCGIFBAUDRATE = (int)_IOWR('i', 109, struct oifreq); { get ifnet's if_baudrate }
  299. SIOCADDIFVIPA = cint(IOC_VOID or (ord('i') shl 8) or 66); { specify interfaces that should use this vipa }
  300. SIOCDELIFVIPA = cint(IOC_VOID or (ord('i') shl 8) or 67); { unconfigure interfaces using this vipa }
  301. SIOCLISTIFVIPA = cint(IOC_VOID or (ord('i') shl 8) or 68); { list interfaces using this vipa }
  302. TIOC = ord('T') shl 8;
  303. TCGETS = TIOC or 1;
  304. TCSETS = TIOC or 2;
  305. TCSETSW = TIOC or 3;
  306. TCSETSF = TIOC or 4;
  307. TCGETA = TIOC or 5;
  308. TCSETA = TIOC or 6;
  309. TCSETAW = TIOC or 7;
  310. TCSETAF = TIOC or 8;
  311. { SVID interface }
  312. TCSBRK = TIOC or 9;
  313. { 0->.25 seconds else <arg>ms }
  314. TCSBREAK = TIOC or 10;
  315. TCXONC = TIOC or 11;
  316. TCFLSH = TIOC or 12;
  317. TCGLEN = TIOC or 13;
  318. TCSLEN = TIOC or 14;
  319. TCSAK = TIOC or 15;
  320. TCQSAK = TIOC or 16;
  321. TCTRUST = TIOC or 17;
  322. TCQTRUST = TIOC or 18;
  323. TCSMAP = TIOC or 19;
  324. TCGMAP = TIOC or 20;
  325. TCKEP = TIOC or 21;
  326. TCGSAK = TIOC or 22;
  327. TCLOOP = TIOC or 23;
  328. TCVPD = TIOC or 24;
  329. TCREG = TIOC or 25;
  330. TCGSTATUS = TIOC or 26;
  331. TCSCONTROL = TIOC or 27;
  332. TCSCSMAP = TIOC or 28;
  333. TCGCSMAP = TIOC or 29;
  334. TCMGR = TCSAK;
  335. TCQMGR = TCQSAK;
  336. TIONREAD = FIONREAD;
  337. { used with TCSAK and TCQSAK }
  338. TCSAKOFF = 0;
  339. TCSAKON = 1;
  340. { used with TCTRUST and TCQTRUCT }
  341. TCUNTRUSTED = 0;
  342. TCTRUSTED = 1;
  343. type
  344. Ptcflag_t = ^tcflag_t;
  345. tcflag_t = dword;
  346. Pcc_t = ^cc_t;
  347. cc_t = byte;
  348. const
  349. NCCS = 16;
  350. type
  351. Pspeed_t = ^speed_t;
  352. speed_t = dword;
  353. {
  354. * Ioctl control packet
  355. }
  356. { input modes }
  357. { output modes }
  358. { control modes }
  359. { line discipline modes }
  360. { control chars }
  361. Ptermios = ^termios;
  362. termios = record
  363. c_iflag : tcflag_t;
  364. c_oflag : tcflag_t;
  365. c_cflag : tcflag_t;
  366. c_lflag : tcflag_t;
  367. c_cc : array[0..(NCCS)-1] of cc_t;
  368. end;
  369. { use POSIX required prototypes }
  370. function tcgetattr(_para1:longint; var _para2:termios):longint;cdecl;external;
  371. function tcgetsid(_para1:longint):pid_t;cdecl;external;
  372. (* Const before type ignored *)
  373. function tcsetattr(_para1:longint; _para2:longint; constref _para3:termios):longint;cdecl;external;
  374. //function tcsendbreak(_para1:longint; _para2:longint):longint;cdecl;external;
  375. //function tcdrain(_para1:longint):longint;cdecl;external;
  376. //function tcflush(_para1:longint; _para2:longint):longint;cdecl;external;
  377. ///function tcflow(_para1:longint; _para2:longint):longint;cdecl;external;
  378. (* Const before type ignored *)
  379. function cfgetospeed(var _para1:termios):speed_t;cdecl;external;
  380. (* Const before type ignored *)
  381. function cfgetispeed(var _para1:termios):speed_t;cdecl;external;
  382. function cfsetospeed(constref _para1:termios; _para2:speed_t):longint;cdecl;external;
  383. function cfsetispeed(var _para1:termios; _para2:speed_t):longint;cdecl;external;
  384. { mask name symbols for c_lflag }
  385. { values for optional_actions arguments to tcsetattr() }
  386. const
  387. TCSANOW = 0;
  388. TCSADRAIN = 1;
  389. TCSAFLUSH = 2;
  390. { values for the queue_selector argument to tcflush() }
  391. TCIFLUSH = 0;
  392. TCOFLUSH = 1;
  393. TCIOFLUSH = 2;
  394. { values for the action argument to tcflow() }
  395. TCOOFF = 0;
  396. TCOON = 1;
  397. TCIOFF = 2;
  398. TCION = 3;
  399. { control characters }
  400. VINTR = 0;
  401. VQUIT = 1;
  402. VERASE = 2;
  403. VKILL = 3;
  404. VEOF = 4;
  405. VEOL = 5;
  406. VSTART = 7;
  407. VSTOP = 8;
  408. VSUSP = 9;
  409. VMIN = 4;
  410. VTIME = 5;
  411. VEOL2 = 6;
  412. VDSUSP = 10;
  413. VREPRINT = 11;
  414. VDISCRD = 12;
  415. VWERSE = 13;
  416. VLNEXT = 14;
  417. { 5.4 compatability }
  418. VSTRT = VSTART;
  419. const
  420. B0 = $00000000;
  421. B50 = $00000001;
  422. B75 = $00000002;
  423. B110 = $00000003;
  424. B134 = $00000004;
  425. B150 = $00000005;
  426. B200 = $00000006;
  427. B300 = $00000007;
  428. B600 = $00000008;
  429. B1200 = $00000009;
  430. B1800 = $0000000a;
  431. B2400 = $0000000b;
  432. B4800 = $0000000c;
  433. B9600 = $0000000d;
  434. B19200 = $0000000e;
  435. B38400 = $0000000f;
  436. EXTA = B19200;
  437. EXTB = B38400;
  438. { _ALL_SOURCE }
  439. { c_iflag bits }
  440. const
  441. IGNBRK = $00000001;
  442. BRKINT = $00000002;
  443. IGNPAR = $00000004;
  444. PARMRK = $00000008;
  445. INPCK = $00000010;
  446. ISTRIP = $00000020;
  447. INLCR = $00000040;
  448. IGNCR = $00000080;
  449. ICRNL = $00000100;
  450. IXON = $00000200;
  451. IXOFF = $00000400;
  452. const
  453. IUCLC = $00000800;
  454. const
  455. IXANY = $00001000;
  456. IMAXBEL = $00010000;
  457. { c_oflag bits }
  458. const
  459. OPOST = $00000001;
  460. const
  461. OLCUC = $00000002;
  462. const
  463. ONLCR = $00000004;
  464. OCRNL = $00000008;
  465. ONOCR = $00000010;
  466. ONLRET = $00000020;
  467. OFILL = $00000040;
  468. OFDEL = $00000080;
  469. CRDLY = $00000300;
  470. // CR0 = $00000000;
  471. // CR1 = $00000100;
  472. // CR2 = $00000200;
  473. // CR3 = $00000300;
  474. TABDLY = $00000c00;
  475. // TAB0 = $00000000;
  476. // TAB1 = $00000400;
  477. // TAB2 = $00000800;
  478. // TAB3 = $00000c00;
  479. BSDLY = $00001000;
  480. // BS0 = $00000000;
  481. // BS1 = $00001000;
  482. FFDLY = $00002000;
  483. // FF0 = $00000000;
  484. // FF1 = $00002000;
  485. NLDLY = $00004000;
  486. // NL0 = $00000000;
  487. // NL1 = $00004000;
  488. VTDLY = $00008000;
  489. VT0 = $00000000;
  490. VT1 = $00008000;
  491. DLY_MASK = ((((NLDLY or CRDLY) or TABDLY) or BSDLY) or VTDLY) or FFDLY;
  492. { expand tabs to spaces added }
  493. OXTABS = $00040000;
  494. { on 08/05/92. }
  495. { discard EOT's (^D) on output }
  496. ONOEOT = $00080000;
  497. { added on 08/05/92. }
  498. { c_cflag bits }
  499. const
  500. _CBAUD = $0000000f;
  501. CBAUD = _CBAUD;
  502. CSIZE = $00000030;
  503. CS5 = $00000000;
  504. CS6 = $00000010;
  505. CS7 = $00000020;
  506. CS8 = $00000030;
  507. CSTOPB = $00000040;
  508. CREAD = $00000080;
  509. PARENB = $00000100;
  510. PARODD = $00000200;
  511. HUPCL = $00000400;
  512. CLOCAL = $00000800;
  513. _CIBAUD = $000f0000;
  514. _IBSHIFT = 16;
  515. CIBAUD = _CIBAUD;
  516. IBSHIFT = _IBSHIFT;
  517. PAREXT = $00100000;
  518. { c_lflag bits }
  519. const
  520. ISIG = $00000001;
  521. ICANON = $00000002;
  522. const
  523. XCASE = $00000004;
  524. const
  525. // ECHO = $00000008;
  526. ECHOE = $00000010;
  527. ECHOK = $00000020;
  528. ECHONL = $00000040;
  529. NOFLSH = $00000080;
  530. // TOSTOP = $00010000;
  531. ECHOCTL = $00020000;
  532. ECHOPRT = $00040000;
  533. ECHOKE = $00080000;
  534. // FLUSHO = $00100000;
  535. { use alternate WERASE }
  536. ALTWERASE = $00400000;
  537. { algorithm, added ALTWERASE }
  538. { on 08/05/92. }
  539. // PENDIN = $20000000;
  540. { ALL_SOURCE }
  541. const
  542. IEXTEN = $00200000;