ioctl()
The ioctl() socket call performs special operations on sockets.
Syntax
#include <types.h>
#include <sys\socket.h>
#include <sys\ioctl.h>
#include <net\route.h>
#include <net\if.h>
#include <net\if_arp.h>
int ioctl(s, cmd, data)
int s;
int cmd;
caddr_t data;
Parameters
s
cmd
data
Pointer to the data associated with cmd.
Description
This call controls the operating characteristics of sockets. The data
parameter is a pointer to data associated with the particular command,
and its format depends on the command that is requested.
Option
FIOASYNC
FIONBIO
Setsorclearsnonblockinginput
/ outputforasocket .Whenthisoptionisset ,input / outputcallswillnotblockuntilthecalliscompleted
.Thedataparameterisapointertoaninteger .Iftheintegeris0 ,nonblockinginput
/ outputonthesocketiscleared .Otherwise ,thesocketissetfornonblockinginput
/ output .
FIONREAD
Getsthenumberofimmediatelyreadablebytesforthesocket
.Thedataparameterisapointertoaninteger .Setsthevalueoftheintegertothenumberofimmediatelyreadablecharactersforthesocket
.
Internet: The following ioctl commands are supported for the internet
domain:
Option
OSIOCGIFADDR
ProvidedforcompatibilitywithreleasesofTCP
/ IPpriorto4 . 21 .Thedataparameterisapointertoanifreqstructure .Theinterfaceaddressisreturnedintheoldsockaddrformatintheargument
.
OSIOCGIFDSTADDR
ProvidedforcompatibilitywithreleasesofTCP
/ IPpriorto4 . 21 .Thedataparameterisapointertoanifreqstructure .Thedestinationaddressisreturnedintheoldsockaddrformatintheargument
.
OSIOCGIFBRDADDR
ProvidedforcompatibilitywithreleasesofTCP
/ IPpriorto4 . 21 .Thedataparameterisapointertoanifreqstructure .Thebroadcastaddressisreturnedintheoldsockaddrformatintheargument
.
OSIOCGIFCONF
ProvidedforcompatibilitywithreleasesofTCP
/ IPpriorto4 . 21 .Thedataparameterisapointertoanifreqstructure .Theinterfaceconfigurationisreturnedintheoldsockaddrformatintheargument
.
OSIOCGIFNETMASK
ProvidedforcompatibilitywithreleasesofTCP
/ IPpriorto4 . 21 .Thedataparameterisapointertoanifreqstructure .Theinterfacenetmaskisreturnedintheoldsockaddrformatintheargument
.
SIOCADDMULTI
Addsa48 -
bitphysicalmulticastaddress . ThisworksonlyforEthernet .Thedataparameterisapointertoanifreqstructure
.
SIOCADDRT
Addsaroutingtableentry
. Thedataparameterisapointertoanrtentrystructure ,asdefinedin<
NET \ ROUTE . H > .Theroutingtableentry ,passedasanargument ,isaddedtotheroutingtables
.
SIOCAIFADDR
AddsanIPaddressforaninterface
.Thedataparameterisapointertoanifaliasreqstructure ,whichisdefinedin<
NET \ IF . H >
SIOCARP
SendsanARPrequesttoallinterfacesforagivenIPaddress
.ThedataparameterisapointertotheIPaddressinthetypeofanunsignedlonginteger
.
SIOCATMARK
Querieswhetherthecurrentlocationinthedatainputispointingtoout
- of - banddata .Thedataparameterisapointertoaninteger .Setstheargumentto1ifthesocketpointstoamarkinthedatastreamforout
- of - banddata . Otherwise ,setstheargumentto0 .
SIOCDARP
Deletesanarptableentry
.Thedataparameterisapointertoanarpreqasdefinedin< NET \
IF _ ARP . H > . Thearptableentrypassedasanargumentisdeletedfromthearptables
,ifitexists .
SIOCDELMULTI
(
Ethernetonly . )Deletesa48 - bitphysicalmulticastaddress . Thedataparameterisapointertoanifreqstructure
,whichisdefinedin< NET \ IF . H > .
SIOCDELRT
Deletesaroutingtableentry
.Thedataparameterisapointertoartentrystructure ,asdefinedin< NET
\ ROUTE . H > .Ifitexists ,theroutingtableentrypassedasanargumentisdeletedfromtheroutingtables
.
SIOCDIFADDR
DeletesanIPaddressforaninterface
.Thedataparameterisapointertoanifreqstructure ,definedin< NET
\ IF . H > .
SIOCGARP
Getsthearptableentries
.Thedataparameterisapointertoanarpreqstructure ,asdefinedin< NET
\ IF _ ARP . H > .Thearptableentrypassedasanargumentisreturnedfromthearptablesifitexists
.
SIOCGARP _ TR
Getsthetoken
- ringarptableentrieswithroutinginformationfield .Thedataparameterisapointertoanarpreq
_ trstructure ,asdefinedin< NET \ IF _ ARP . H > .Thearptableentryfromthearptableisreturnedifitexists
.
SIOCGIFADDR
Getsthenetworkinterfaceaddress
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .Theinterfaceaddressisreturnedintheargument .
SIOCGIFBOUND
ChecksthenumberofMediumAccessControl(
MAC )driversthatwillbeboundorhavebeenbound .Thedataparameterisapointertoabndreqstructure
,definedin< SYS \ IOCTLOS2 . H > .ThebindindsvariableinthestructurewillreturnthenumberofMACdriversthattheINETprotocolwillbindto
,andtheboundvariablewillreturnthenumberofMACdriversthathavebeenbound
.
SIOCGIFBRDADDR
Getsthenetworkinterfacebroadcastaddress
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .Theinterfacebroadcastaddressisreturnedintheargument .
SIOCGIFCONF
Getsthenetworkinterfaceconfiguration
.Thedataparameterisapointertoanifconfstructure ,asdefinedin< NET
\ IF . H > . Theinterfaceconfigurationisreturnedintheargument .ItisimportanttonotethattheifconfstructurechangedinTCP
/ IP4 . 21 .
SIOCGIFDSTADDR
Getsthenetworkinterfacedestinationaddress
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .Theinterfacedestination( point - to - point )addressisreturnedintheargument
.
SIOCGIFEFLAGS
Getsextendedflagsfortheinterface
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .Theinterfaceextendedflagsarereturnedintheifr _ eflagsfield
.
SIOCGIFFLAGS
Getsthenetworkinterfaceflags
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > . Theinterfaceflagsarereturnedintheifr _ flagsfield .
SIOCGIFMETRIC
Getsthenetworkinterfaceroutingmetric
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > . Theinterfaceroutingmetricisreturnedintheifr _ metricfield
.
SIOCGIFMTU
GetstheinterfaceMTUvalue
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .TheinterfaceMTUisreturnedintheifr _ metricfield .
SIOCGIFNETMASK
Getsthenetworkinterfacenetworkmask
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .Theinterfacenetworkmaskisreturnedintheifr _ dstaddrfield
.
SIOCGIFTRACE
Getsdatafromtheinterfaceinput
/ outputtracingbuffer .Thedataparameterisapointertoanifreqstructure
,asdefinedin< NET \ IF . H > .Theifr _ datafieldshouldpointtothepkt
_ trace _ hdrstructureasdefinedin< NET \ IF . H > .
SIOCGIFVALID
Checksiftheinterfaceisvalid
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .
SIOCGMCAST
Getsthejoinedmulticastaddressesfortheinterface
.Thedataparameterisapointertoanaddrreqstructure ,asdefinedin<
NET \ IF . H > .
SIOCGMSL
GetstheTCPMaximumSegmentLifetime(
MSL )value ,inseconds .
SIOCGSTAT
Getstheseriallinkinterfacestatistics
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .Theifr _ datafieldshouldpointtoanifstatstructure ,asdefinedin<
NET \ IF . H > .
SIOCGUNIT
Getstheinterfaceunitnumber
.
SIOCMULTISBC
UsebroadcastforphysicaltransmissionofIPmulticastdatagrams(
RFC1469 ) .
SIOCMULTISFA
UsefunctionaladdressforphysicaltransmissionofIPmulticastdatagrams(
RFC1469 ) .
SIOCSARP
Setsanarptableentry
.Thedataparameterisapointertoanarpreqasdefinedin< NET \
IF _ ARP . H > . Thearptableentrypassedasanargumentisaddedtothearptables
.
SIOCSARP _ TR
Setsatoken
- ringarptableentrywithroutinginformation .Thedataparameterisapointertoanarp
_ reqstructure ,asdefinedin< NET \ IF _ ARP . H > .
SIOCSHOSTID
SetstheIPaddressofthehostthatwillbedisplayedbytheHOSTID
. EXEutility .ThedataparameterisapointertotheIPaddressofthetypeofunsignedlong
.
SIOCSIF802 _ 3
Setstheinterfacetosendpacketsin802
. 3format .Thedataparameterisapointertoanifreqstructure ,asdefinedin<
NET \ IF . H > .
SIOCSIFADDR
Setsthenetworkinterfaceaddress
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .Setstheinterfaceaddresstothevaluepassedintheargument .
SIOCSIFALLRTB
Setstheinterfacetouseall
- routebroadcast ,fortokenringonly .Thedataparameterisapointertoanifreqstructure
,asdefinedin< NET \ IF . H > .
SIOCSIFBRD
Setstheinterfacetousesingleroutebroadcast
,fortokenringonly .Thedataparameterisapointertoanifreqstructure ,asdefinedin<
NET \ IF . H > .
SIOCSIFBRDADDR
Setsthenetworkinterfacebroadcastaddress
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .Setstheinterfacebroadcastaddresstothevaluepassedintheargument
.
SIOCSIFDSTADDR
Setsthenetworkinterfacedestinationaddress
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .Setstheinterfacedestination( point - to - point )addresstothevaluepassedintheargument
.
SIOCSIFEFLAGS
Setsextendedflagsfortheinterface
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .Theextendedflagsshouldbepassedintheifr _ eflagsfield .
SIOCSIFFDDI
Setsthetoken
- ringinterfacetousecanonicalformatofARP .Thedataparameterisapointertoanifreqstructure
,asdefinedin< NET \ IF . H > .
SIOCSIFFLAGS
Setsthenetworkinterfaceflags
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > . Setstheinterfaceflagstothevaluespassedintheifr _ flagsfield
.
SIOCSIFMETRIC
Setsthenetworkinterfaceroutingmetric
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > . Setstheinterfaceroutingmetrictothevaluepassedintheifr _
metricfield .
SIOCSIFMTU
SetstheinterfaceMTUvalue
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .SetstheinterfaceMTUtothevaluepassedintheifr _ metricfield
.
SIOCSIFNETMASK
Setsthenetworkinterfacenetworkmask
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .Setstheinterfacenetworkmasktothevaluepassedintheargument
.
SIOCSIFNO802 _ 3
SetstheinterfacetosendpacketswithEthernetheaderframeformat
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .
SIOCSIFNOFDDI
Setsthetoken
- ringinterfacetousenoncanonicalformatforARP .
SIOCSIFNOREDIR
DisableICMPredirectfunctionforaninterface
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .
SIOCSIFRUNNINGBLK
(
Tokenringonly . )Blocksthecallingthreaduntiltheinterfaceisbackinrunningstate
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .Thisistypicallyusefulwhenthenetworkcableneedstobedisconnectedtemporarily
.
SIOCSIFTRACE
Createsaninterfaceinput
/ outputtracingpacket .Thedataparameterisapointertoanifreqstructure
,asdefinedin< NET \ IF . H > .Thetracepacketshouldbeplacedinthepkt
_ trace _ hdrstructure ,asdefinedin< NET \ IF . H > ,whichshouldbepointedtobytheifr
_ datafield .
SIOCSIFYESREDIR
EnablesICMPredirectfunctionforaninterface
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .
SIOCSMSL
SetstheTCPMaximumSegmentLifetime(
MSL )valueinseconds .
SIOCSRDBRD
Enablesloopbackforbroadcastpackets
.
SIOCSSTAT
Setstheseriallinkinterfacestatistics
.Thedataparameterisapointertoanifreqstructure ,asdefinedin< NET
\ IF . H > .Thestatisticsarereturnedinanifstatstructurepointedtobytheifr
_ datafield .
SIOCSSYN
SetstheSYNattackpreventionfunctionflagonoroff
.Thedataparametershouldpointtoanintegerthatcontainszeroforoffandnonzeroforon
.Thefunctionisoffbydefault .
SIOFLUSHRT
Flushestheentireroutingtable
,includingallroutestoallinterfaces .
SIOFLUSHRTIFP
Flushesallroutesforthespecifiedinterfaceonly
.Thedataparameterisapointertoaninterfacename ,suchaslan0 .
SIOSTATCNTAT
GetsthecountofARPentries
.
SIOSTATCNTRT
Getsthecountofentriesintheroutingtable
.
SIOSTATICMP
GetsICMPstatistics
.Thedataparameterisapointertoanicmpstatstructure ,asdefinedin<
NETINET \ ICMP _ VAR . H > .
SIOSTATICMPZ
ClearsICMPstatistics
.Thedataparameterisapointertoanicmpstatstructure ,asdefinedin<
NETINET \ ICMP _ VAR . H > .
SIOSTATIGMP
GetsIGMPstatistics
.Thedataparameterisapointertoanigmpstatstructure ,asdefinedin<
NETINET \ IGMP _ VAR . H > .
SIOSTATIGMPZ
ClearsIGMPstatistics
.Thedataparameterisapointertoanigmpstatstructure ,asdefinedin<
NETINET \ IGMP _ VAR . H > .
SIOSTATIP
GetsIPstatistics
.Thedataparameterisapointertoanipstatstructure ,asdefinedin< NETINET
\ IP _ VAR . H > .
SIOSTATIPZ
ClearsIPstatistics
.Thedataparameterisapointertoanipstatstructure ,asdefinedin< NETINET
\ IP _ VAR . H > .
SIOSTATMBUF
Getsmemoryusagestatus
.Thedataparameterisapointertoanmbstatstructure ,asdefinedin< SYS
\ MBUF . H > .
SIOSTATTCP
GetsTCPstatistics
.Thedataparameterisapointertoatcpstatstructure ,asdefinedin< NETINET
\ TCP _ VAR . H > .
SIOSTATTCPZ
ClearsTCPstatistics
.Thedataparameterisapointertoatcpstatstructure ,asdefinedin< NETINET
\ TCP _ VAR . H > .
SIOSTATUDP
GetsUDPstatistics
.Thedataparameterisapointertoaudpstatstructure ,asdefinedin< NETINET
\ UDP _ VAR . H > .
SIOSTATUDPZ
ClearsUDPstatistics
.Thedataparameterisapointertoaudpstatstructure ,asdefinedin< NETINET
\ UDP _ VAR . H > .
NetBIOS: The following ioctl() calls are
supported for the NetBIOS domain:
Option
SIOCGNBNAME
GetstheNetBIOShostname
.Thedataparameterisapointertoasocaddr _ nbstructure ,whichisdefinedin<
NETNB \ NB . H > .
SIOCGNCBFN
Issuesncb
. find . name .Thedataparameterisapointertoasocaddr _ nbstructure
,whichisdefinedin< NETNB \ NB . H > .
SIOCSNBNAME
SetstheNetBIOShostname
.Thedataparameterisapointertoasocaddr _ nbstructure ,whichisdefinedin<
NETNB \ NB . H > .
Return Values
The value 0 indicates success; the value -1 indicates an error. You can
get the specific error code by calling sock_errno() or psock_errno().
sock_errno() Value
SOCENOTSOCK
Thesparameterisnotavalidsocketdescriptor
.
SOCEINVAL
Therequestisnotvalidornotsupported
.
SOCEOPNOTSUPP
Theoperationisnotsupportedonthesocket
.
SOCEFAULT
Usingdatawouldresultinanattempttoaccessmemoryoutsidethecalleraddressspace
.
Examples
The following is an example of the ioctl() call.
int s;int dontblock;
int rc;
int ioctl(int s, int cmd, caddr_t data); /* extracted from sys\socket.h */
...
/* Place the socket into nonblocking mode */
dontblock = 1;
rc = ioctl(s, FIONBIO, (char *) &dontblock);
...
Related Calls
[Back: getsockopt()]
[Next: listen()]