1afe61c15SRodney W. Grimes.\" Copyright (c) 1983, 1990, 1991, 1993 2afe61c15SRodney W. Grimes.\" The Regents of the University of California. All rights reserved. 3afe61c15SRodney W. Grimes.\" 4afe61c15SRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without 5afe61c15SRodney W. Grimes.\" modification, are permitted provided that the following conditions 6afe61c15SRodney W. Grimes.\" are met: 7afe61c15SRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright 8afe61c15SRodney W. Grimes.\" notice, this list of conditions and the following disclaimer. 9afe61c15SRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright 10afe61c15SRodney W. Grimes.\" notice, this list of conditions and the following disclaimer in the 11afe61c15SRodney W. Grimes.\" documentation and/or other materials provided with the distribution. 12afe61c15SRodney W. Grimes.\" 3. All advertising materials mentioning features or use of this software 13afe61c15SRodney W. Grimes.\" must display the following acknowledgement: 14afe61c15SRodney W. Grimes.\" This product includes software developed by the University of 15afe61c15SRodney W. Grimes.\" California, Berkeley and its contributors. 16afe61c15SRodney W. Grimes.\" 4. Neither the name of the University nor the names of its contributors 17afe61c15SRodney W. Grimes.\" may be used to endorse or promote products derived from this software 18afe61c15SRodney W. Grimes.\" without specific prior written permission. 19afe61c15SRodney W. Grimes.\" 20afe61c15SRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21afe61c15SRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22afe61c15SRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23afe61c15SRodney W. Grimes.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24afe61c15SRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25afe61c15SRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26afe61c15SRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27afe61c15SRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28afe61c15SRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29afe61c15SRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30afe61c15SRodney W. Grimes.\" SUCH DAMAGE. 31afe61c15SRodney W. Grimes.\" 32afe61c15SRodney W. Grimes.\" @(#)netintro.4 8.2 (Berkeley) 11/30/93 337f3dea24SPeter Wemm.\" $FreeBSD$ 34afe61c15SRodney W. Grimes.\" 35*57d84848SXin LI.Dd April 14, 2010 36afe61c15SRodney W. Grimes.Dt NETINTRO 4 373d45e180SRuslan Ermilov.Os 38afe61c15SRodney W. Grimes.Sh NAME 39afe61c15SRodney W. Grimes.Nm networking 40afe61c15SRodney W. Grimes.Nd introduction to networking facilities 41afe61c15SRodney W. Grimes.Sh SYNOPSIS 4232eef9aeSRuslan Ermilov.In sys/types.h 4332eef9aeSRuslan Ermilov.In sys/time.h 4432eef9aeSRuslan Ermilov.In sys/socket.h 4532eef9aeSRuslan Ermilov.In net/if.h 4632eef9aeSRuslan Ermilov.In net/route.h 47afe61c15SRodney W. Grimes.Sh DESCRIPTION 48afe61c15SRodney W. GrimesThis section is a general introduction to the networking facilities 49afe61c15SRodney W. Grimesavailable in the system. 50afe61c15SRodney W. GrimesDocumentation in this part of section 51afe61c15SRodney W. Grimes4 is broken up into three areas: 52afe61c15SRodney W. Grimes.Em protocol families 53afe61c15SRodney W. Grimes(domains), 54afe61c15SRodney W. Grimes.Em protocols , 55afe61c15SRodney W. Grimesand 56afe61c15SRodney W. Grimes.Em network interfaces . 57afe61c15SRodney W. Grimes.Pp 58afe61c15SRodney W. GrimesAll network protocols are associated with a specific 59afe61c15SRodney W. Grimes.Em protocol family . 60afe61c15SRodney W. GrimesA protocol family provides basic services to the protocol 61afe61c15SRodney W. Grimesimplementation to allow it to function within a specific 62b5e7e999SRuslan Ermilovnetwork environment. 63b5e7e999SRuslan ErmilovThese services may include 64afe61c15SRodney W. Grimespacket fragmentation and reassembly, routing, addressing, and 65b5e7e999SRuslan Ermilovbasic transport. 66b5e7e999SRuslan ErmilovA protocol family may support multiple 67afe61c15SRodney W. Grimesmethods of addressing, though the current protocol implementations 68b5e7e999SRuslan Ermilovdo not. 69b5e7e999SRuslan ErmilovA protocol family is normally comprised of a number of protocols, one per 70afe61c15SRodney W. Grimes.Xr socket 2 71b5e7e999SRuslan Ermilovtype. 72b5e7e999SRuslan ErmilovIt is not required that a protocol family support all socket types. 73b5e7e999SRuslan ErmilovA protocol family may contain multiple 74afe61c15SRodney W. Grimesprotocols supporting the same socket abstraction. 75afe61c15SRodney W. Grimes.Pp 76afe61c15SRodney W. GrimesA protocol supports one of the socket abstractions detailed in 77afe61c15SRodney W. Grimes.Xr socket 2 . 78afe61c15SRodney W. GrimesA specific protocol may be accessed either by creating a 79afe61c15SRodney W. Grimessocket of the appropriate type and protocol family, or 80afe61c15SRodney W. Grimesby requesting the protocol explicitly when creating a socket. 81afe61c15SRodney W. GrimesProtocols normally accept only one type of address format, 82afe61c15SRodney W. Grimesusually determined by the addressing structure inherent in 83afe61c15SRodney W. Grimesthe design of the protocol family/network architecture. 84afe61c15SRodney W. GrimesCertain semantics of the basic socket abstractions are 85b5e7e999SRuslan Ermilovprotocol specific. 86b5e7e999SRuslan ErmilovAll protocols are expected to support 87afe61c15SRodney W. Grimesthe basic model for their particular socket type, but may, 88afe61c15SRodney W. Grimesin addition, provide non-standard facilities or extensions 89b5e7e999SRuslan Ermilovto a mechanism. 90b5e7e999SRuslan ErmilovFor example, a protocol supporting the 91afe61c15SRodney W. Grimes.Dv SOCK_STREAM 92afe61c15SRodney W. Grimesabstraction may allow more than one byte of out-of-band 93afe61c15SRodney W. Grimesdata to be transmitted per out-of-band message. 94afe61c15SRodney W. Grimes.Pp 95afe61c15SRodney W. GrimesA network interface is similar to a device interface. 96afe61c15SRodney W. GrimesNetwork interfaces comprise the lowest layer of the 97afe61c15SRodney W. Grimesnetworking subsystem, interacting with the actual transport 98b5e7e999SRuslan Ermilovhardware. 99b5e7e999SRuslan ErmilovAn interface may support one or more protocol families and/or address formats. 100afe61c15SRodney W. GrimesThe SYNOPSIS section of each network interface 101afe61c15SRodney W. Grimesentry gives a sample specification 102afe61c15SRodney W. Grimesof the related drivers for use in providing 103afe61c15SRodney W. Grimesa system description to the 104afe61c15SRodney W. Grimes.Xr config 8 105afe61c15SRodney W. Grimesprogram. 106afe61c15SRodney W. GrimesThe DIAGNOSTICS section lists messages which may appear on the console 107afe61c15SRodney W. Grimesand/or in the system error log, 108afe61c15SRodney W. Grimes.Pa /var/log/messages 109afe61c15SRodney W. Grimes(see 110afe61c15SRodney W. Grimes.Xr syslogd 8 ) , 111afe61c15SRodney W. Grimesdue to errors in device operation. 112afe61c15SRodney W. Grimes.Sh PROTOCOLS 113afe61c15SRodney W. GrimesThe system currently supports the 114afe61c15SRodney W. GrimesInternet 115afe61c15SRodney W. Grimesprotocols, the Xerox Network Systems(tm) protocols, 116afe61c15SRodney W. Grimesand some of the 117afe61c15SRodney W. Grimes.Tn ISO OSI 118afe61c15SRodney W. Grimesprotocols. 119afe61c15SRodney W. GrimesRaw socket interfaces are provided to the 120afe61c15SRodney W. Grimes.Tn IP 121afe61c15SRodney W. Grimesprotocol 122afe61c15SRodney W. Grimeslayer of the 123afe61c15SRodney W. GrimesInternet, and to the 124afe61c15SRodney W. Grimes.Tn IDP 125afe61c15SRodney W. Grimesprotocol of Xerox 126afe61c15SRodney W. Grimes.Tn NS . 127afe61c15SRodney W. GrimesConsult the appropriate manual pages in this section for more 128afe61c15SRodney W. Grimesinformation regarding the support for each protocol family. 129afe61c15SRodney W. Grimes.Sh ADDRESSING 130afe61c15SRodney W. GrimesAssociated with each protocol family is an address 131b5e7e999SRuslan Ermilovformat. 132b5e7e999SRuslan ErmilovAll network addresses adhere to a general structure, 1336d249eeeSSheldon Hearncalled a sockaddr, described below. 1346d249eeeSSheldon HearnHowever, each protocol 135afe61c15SRodney W. Grimesimposes finer and more specific structure, generally renaming 136afe61c15SRodney W. Grimesthe variant, which is discussed in the protocol family manual 137afe61c15SRodney W. Grimespage alluded to above. 138afe61c15SRodney W. Grimes.Bd -literal -offset indent 139afe61c15SRodney W. Grimesstruct sockaddr { 140afe61c15SRodney W. Grimes u_char sa_len; 141afe61c15SRodney W. Grimes u_char sa_family; 142afe61c15SRodney W. Grimes char sa_data[14]; 143afe61c15SRodney W. Grimes}; 144afe61c15SRodney W. Grimes.Ed 145afe61c15SRodney W. Grimes.Pp 146afe61c15SRodney W. GrimesThe field 1478996a9d5SRuslan Ermilov.Va sa_len 14848dfd764STom Hukinscontains the total length of the structure, 149afe61c15SRodney W. Grimeswhich may exceed 16 bytes. 150afe61c15SRodney W. GrimesThe following address values for 1518996a9d5SRuslan Ermilov.Va sa_family 152afe61c15SRodney W. Grimesare known to the system 153afe61c15SRodney W. Grimes(and additional formats are defined for possible future implementation): 154afe61c15SRodney W. Grimes.Bd -literal 155afe61c15SRodney W. Grimes#define AF_UNIX 1 /* local to host (pipes, portals) */ 156afe61c15SRodney W. Grimes#define AF_INET 2 /* internetwork: UDP, TCP, etc. */ 157afe61c15SRodney W. Grimes#define AF_NS 6 /* Xerox NS protocols */ 158afe61c15SRodney W. Grimes#define AF_CCITT 10 /* CCITT protocols, X.25 etc */ 159afe61c15SRodney W. Grimes#define AF_HYLINK 15 /* NSC Hyperchannel */ 160afe61c15SRodney W. Grimes#define AF_ISO 18 /* ISO protocols */ 161afe61c15SRodney W. Grimes.Ed 162afe61c15SRodney W. Grimes.Sh ROUTING 163dbcc13f5SRuslan Ermilov.Fx 164afe61c15SRodney W. Grimesprovides some packet routing facilities. 165afe61c15SRodney W. GrimesThe kernel maintains a routing information database, which 166afe61c15SRodney W. Grimesis used in selecting the appropriate network interface when 167afe61c15SRodney W. Grimestransmitting packets. 168afe61c15SRodney W. Grimes.Pp 169afe61c15SRodney W. GrimesA user process (or possibly multiple co-operating processes) 170afe61c15SRodney W. Grimesmaintains this database by sending messages over a special kind 171afe61c15SRodney W. Grimesof socket. 172afe61c15SRodney W. GrimesThis supplants fixed size 173afe61c15SRodney W. Grimes.Xr ioctl 2 174afe61c15SRodney W. Grimesused in earlier releases. 175afe61c15SRodney W. Grimes.Pp 176afe61c15SRodney W. GrimesThis facility is described in 177afe61c15SRodney W. Grimes.Xr route 4 . 178afe61c15SRodney W. Grimes.Sh INTERFACES 179afe61c15SRodney W. GrimesEach network interface in a system corresponds to a 180b5e7e999SRuslan Ermilovpath through which messages may be sent and received. 181b5e7e999SRuslan ErmilovA network interface usually has a hardware device associated with it, though 182afe61c15SRodney W. Grimescertain interfaces such as the loopback interface, 183afe61c15SRodney W. Grimes.Xr lo 4 , 184afe61c15SRodney W. Grimesdo not. 185afe61c15SRodney W. Grimes.Pp 186afe61c15SRodney W. GrimesThe following 187edf0e5b3SMike Pritchard.Xr ioctl 2 188afe61c15SRodney W. Grimescalls may be used to manipulate network interfaces. 189afe61c15SRodney W. GrimesThe 190edf0e5b3SMike Pritchard.Fn ioctl 191afe61c15SRodney W. Grimesis made on a socket (typically of type 192afe61c15SRodney W. Grimes.Dv SOCK_DGRAM ) 193afe61c15SRodney W. Grimesin the desired domain. 194afe61c15SRodney W. GrimesMost of the requests supported in earlier releases 195afe61c15SRodney W. Grimestake an 1968996a9d5SRuslan Ermilov.Vt ifreq 197b5e7e999SRuslan Ermilovstructure as its parameter. 198b5e7e999SRuslan ErmilovThis structure has the form 199afe61c15SRodney W. Grimes.Bd -literal 200afe61c15SRodney W. Grimesstruct ifreq { 201afe61c15SRodney W. Grimes#define IFNAMSIZ 16 2027395d17bSTorsten Blum char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */ 203afe61c15SRodney W. Grimes union { 204afe61c15SRodney W. Grimes struct sockaddr ifru_addr; 205afe61c15SRodney W. Grimes struct sockaddr ifru_dstaddr; 206afe61c15SRodney W. Grimes struct sockaddr ifru_broadaddr; 207215940b3SXin LI struct ifreq_buffer ifru_buffer; 20862f76486SMaxim Sobolev short ifru_flags[2]; 209b385a6c9SDag-Erling Smørgrav short ifru_index; 210afe61c15SRodney W. Grimes int ifru_metric; 211c18460f9SMike Pritchard int ifru_mtu; 212c18460f9SMike Pritchard int ifru_phys; 213b385a6c9SDag-Erling Smørgrav int ifru_media; 214afe61c15SRodney W. Grimes caddr_t ifru_data; 215b385a6c9SDag-Erling Smørgrav int ifru_cap[2]; 216afe61c15SRodney W. Grimes } ifr_ifru; 217afe61c15SRodney W. Grimes#define ifr_addr ifr_ifru.ifru_addr /* address */ 218afe61c15SRodney W. Grimes#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ 219afe61c15SRodney W. Grimes#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ 220215940b3SXin LI#define ifr_buffer ifr_ifru.ifru_buffer /* user supplied buffer with its length */ 22162f76486SMaxim Sobolev#define ifr_flags ifr_ifru.ifru_flags[0] /* flags (low 16 bits) */ 22262f76486SMaxim Sobolev#define ifr_flagshigh ifr_ifru.ifru_flags[1] /* flags (high 16 bits) */ 223afe61c15SRodney W. Grimes#define ifr_metric ifr_ifru.ifru_metric /* metric */ 224c18460f9SMike Pritchard#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */ 225c18460f9SMike Pritchard#define ifr_phys ifr_ifru.ifru_phys /* physical wire */ 226b385a6c9SDag-Erling Smørgrav#define ifr_media ifr_ifru.ifru_media /* physical media */ 227afe61c15SRodney W. Grimes#define ifr_data ifr_ifru.ifru_data /* for use by interface */ 228b385a6c9SDag-Erling Smørgrav#define ifr_reqcap ifr_ifru.ifru_cap[0] /* requested capabilities */ 229b385a6c9SDag-Erling Smørgrav#define ifr_curcap ifr_ifru.ifru_cap[1] /* current capabilities */ 230b385a6c9SDag-Erling Smørgrav#define ifr_index ifr_ifru.ifru_index /* interface index */ 231afe61c15SRodney W. Grimes}; 232afe61c15SRodney W. Grimes.Ed 233afe61c15SRodney W. Grimes.Pp 234afe61c15SRodney W. GrimesCalls which are now deprecated are: 235afe61c15SRodney W. Grimes.Bl -tag -width SIOCGIFBRDADDR 236afe61c15SRodney W. Grimes.It Dv SIOCSIFADDR 237b5e7e999SRuslan ErmilovSet interface address for protocol family. 238b5e7e999SRuslan ErmilovFollowing the address assignment, the 239b5e7e999SRuslan Ermilov.Dq initialization 240b5e7e999SRuslan Ermilovroutine for the interface is called. 241afe61c15SRodney W. Grimes.It Dv SIOCSIFDSTADDR 242afe61c15SRodney W. GrimesSet point to point address for protocol family and interface. 243afe61c15SRodney W. Grimes.It Dv SIOCSIFBRDADDR 244afe61c15SRodney W. GrimesSet broadcast address for protocol family and interface. 245afe61c15SRodney W. Grimes.El 246afe61c15SRodney W. Grimes.Pp 247edf0e5b3SMike Pritchard.Fn Ioctl 248afe61c15SRodney W. Grimesrequests to obtain addresses and requests both to set and 249afe61c15SRodney W. Grimesretrieve other data are still fully supported 250afe61c15SRodney W. Grimesand use the 2518996a9d5SRuslan Ermilov.Vt ifreq 252afe61c15SRodney W. Grimesstructure: 253afe61c15SRodney W. Grimes.Bl -tag -width SIOCGIFBRDADDR 254afe61c15SRodney W. Grimes.It Dv SIOCGIFADDR 255afe61c15SRodney W. GrimesGet interface address for protocol family. 256afe61c15SRodney W. Grimes.It Dv SIOCGIFDSTADDR 257afe61c15SRodney W. GrimesGet point to point address for protocol family and interface. 258afe61c15SRodney W. Grimes.It Dv SIOCGIFBRDADDR 259afe61c15SRodney W. GrimesGet broadcast address for protocol family and interface. 260b385a6c9SDag-Erling Smørgrav.It Dv SIOCSIFCAP 261006ed2eeSYaroslav TykhiyAttempt to set the enabled capabilities field for the interface 262006ed2eeSYaroslav Tykhiyto the value of the 263b385a6c9SDag-Erling Smørgrav.Va ifr_reqcap 264b385a6c9SDag-Erling Smørgravfield of the 265b385a6c9SDag-Erling Smørgrav.Vt ifreq 266b385a6c9SDag-Erling Smørgravstructure. 267006ed2eeSYaroslav TykhiyNote that, depending on the particular interface features, 268006ed2eeSYaroslav Tykhiysome capabilities may appear hard-coded to enabled, or toggling 269006ed2eeSYaroslav Tykhiya capability may affect the status of other ones. 270006ed2eeSYaroslav TykhiyThe supported capabilities field is read-only, and the 271b385a6c9SDag-Erling Smørgrav.Va ifr_curcap 272006ed2eeSYaroslav Tykhiyfield is unused by this call. 273006ed2eeSYaroslav Tykhiy.It Dv SIOCGIFCAP 274006ed2eeSYaroslav TykhiyGet the interface capabilities fields. 275006ed2eeSYaroslav TykhiyThe values for supported and enabled capabilities will be returned in the 276006ed2eeSYaroslav Tykhiy.Va ifr_reqcap 277006ed2eeSYaroslav Tykhiyand 278006ed2eeSYaroslav Tykhiy.Va ifr_curcap 279006ed2eeSYaroslav Tykhiyfields of the 280b385a6c9SDag-Erling Smørgrav.Vt ifreq 281006ed2eeSYaroslav Tykhiystructure, respectively. 282215940b3SXin LI.It Dv SIOCGIFDESCR 283215940b3SXin LIGet the interface description, returned in the 284215940b3SXin LI.Va buffer 285215940b3SXin LIfield of 286215940b3SXin LI.Va ifru_buffer 287215940b3SXin LIstruct. 288215940b3SXin LIThe user supplied buffer length should be defined in the 289215940b3SXin LI.Va length 290215940b3SXin LIfield of 291215940b3SXin LI.Va ifru_buffer 292215940b3SXin LIstruct passed in as parameter, and the length would include 293215940b3SXin LIthe terminating nul character. 294215940b3SXin LIIf there is not enough space to hold the interface length, 295*57d84848SXin LIno copy would be done and the 296*57d84848SXin LI.Va buffer 297*57d84848SXin LIfield of 298*57d84848SXin LI.Va ifru_buffer 299*57d84848SXin LIwould be set to NULL. 300215940b3SXin LIThe kernel will store the buffer length in the 301215940b3SXin LI.Va length 302215940b3SXin LIfield upon return, regardless whether the buffer itself is 303215940b3SXin LIsufficient to hold the data. 304215940b3SXin LI.It Dv SIOCSIFDESCR 305215940b3SXin LISet the interface description to the value of the 306215940b3SXin LI.Va buffer 307215940b3SXin LIfield of 308215940b3SXin LI.Va ifru_buffer 309215940b3SXin LIstruct, with 310215940b3SXin LI.Va length 311215940b3SXin LIfield specifying its length (counting the terminating nul). 312afe61c15SRodney W. Grimes.It Dv SIOCSIFFLAGS 313b5e7e999SRuslan ErmilovSet interface flags field. 314b5e7e999SRuslan ErmilovIf the interface is marked down, 315afe61c15SRodney W. Grimesany processes currently routing packets through the interface 316afe61c15SRodney W. Grimesare notified; 317afe61c15SRodney W. Grimessome interfaces may be reset so that incoming packets are no longer received. 318afe61c15SRodney W. GrimesWhen marked up again, the interface is reinitialized. 319afe61c15SRodney W. Grimes.It Dv SIOCGIFFLAGS 320afe61c15SRodney W. GrimesGet interface flags. 321afe61c15SRodney W. Grimes.It Dv SIOCSIFMETRIC 322afe61c15SRodney W. GrimesSet interface routing metric. 323afe61c15SRodney W. GrimesThe metric is used only by user-level routers. 324afe61c15SRodney W. Grimes.It Dv SIOCGIFMETRIC 325afe61c15SRodney W. GrimesGet interface metric. 326ad37a95bSBrooks Davis.It Dv SIOCIFCREATE 327ad37a95bSBrooks DavisAttempt to create the specified interface. 328ad37a95bSBrooks DavisIf the interface name is given without a unit number the system 329ad37a95bSBrooks Daviswill attempt to create a new interface with an arbitrary unit number. 330a48060a2SDima DorfmanOn successful return the 3318996a9d5SRuslan Ermilov.Va ifr_name 332ad37a95bSBrooks Davisfield will contain the new interface name. 333ad37a95bSBrooks Davis.It Dv SIOCIFDESTROY 334ad37a95bSBrooks DavisAttempt to destroy the specified interface. 335afe61c15SRodney W. Grimes.El 336afe61c15SRodney W. Grimes.Pp 337afe61c15SRodney W. GrimesThere are two requests that make use of a new structure: 338afe61c15SRodney W. Grimes.Bl -tag -width SIOCGIFBRDADDR 339afe61c15SRodney W. Grimes.It Dv SIOCAIFADDR 340afe61c15SRodney W. GrimesAn interface may have more than one address associated with it 341b5e7e999SRuslan Ermilovin some protocols. 342b5e7e999SRuslan ErmilovThis request provides a means to 343afe61c15SRodney W. Grimesadd additional addresses (or modify characteristics of the 344afe61c15SRodney W. Grimesprimary address if the default address for the address family 345b5e7e999SRuslan Ermilovis specified). 346b5e7e999SRuslan ErmilovRather than making separate calls to 347afe61c15SRodney W. Grimesset destination or broadcast addresses, or network masks 348afe61c15SRodney W. Grimes(now an integral feature of multiple protocols) 349afe61c15SRodney W. Grimesa separate structure is used to specify all three facets simultaneously 350afe61c15SRodney W. Grimes(see below). 351afe61c15SRodney W. GrimesOne would use a slightly tailored version of this struct specific 352afe61c15SRodney W. Grimesto each family (replacing each sockaddr by one 353afe61c15SRodney W. Grimesof the family-specific type). 354afe61c15SRodney W. GrimesWhere the sockaddr itself is larger than the 355afe61c15SRodney W. Grimesdefault size, one needs to modify the 356edf0e5b3SMike Pritchard.Fn ioctl 357afe61c15SRodney W. Grimesidentifier itself to include the total size, as described in 358edf0e5b3SMike Pritchard.Fn ioctl . 359afe61c15SRodney W. Grimes.It Dv SIOCDIFADDR 360afe61c15SRodney W. GrimesThis requests deletes the specified address from the list 361b5e7e999SRuslan Ermilovassociated with an interface. 362b5e7e999SRuslan ErmilovIt also uses the 3638996a9d5SRuslan Ermilov.Vt ifaliasreq 364afe61c15SRodney W. Grimesstructure to allow for the possibility of protocols allowing 365afe61c15SRodney W. Grimesmultiple masks or destination addresses, and also adopts the 366afe61c15SRodney W. Grimesconvention that specification of the default address means 367afe61c15SRodney W. Grimesto delete the first address for the interface belonging to 368afe61c15SRodney W. Grimesthe address family in which the original socket was opened. 369afe61c15SRodney W. Grimes.It Dv SIOCGIFCONF 370b5e7e999SRuslan ErmilovGet interface configuration list. 371b5e7e999SRuslan ErmilovThis request takes an 3728996a9d5SRuslan Ermilov.Vt ifconf 373b5e7e999SRuslan Ermilovstructure (see below) as a value-result parameter. 374b5e7e999SRuslan ErmilovThe 3758996a9d5SRuslan Ermilov.Va ifc_len 376afe61c15SRodney W. Grimesfield should be initially set to the size of the buffer 377afe61c15SRodney W. Grimespointed to by 3788996a9d5SRuslan Ermilov.Va ifc_buf . 379afe61c15SRodney W. GrimesOn return it will contain the length, in bytes, of the 380afe61c15SRodney W. Grimesconfiguration list. 381ad37a95bSBrooks Davis.It Dv SIOCIFGCLONERS 382ad37a95bSBrooks DavisGet list of clonable interfaces. 383ad37a95bSBrooks DavisThis request takes an 3848996a9d5SRuslan Ermilov.Vt if_clonereq 385ad37a95bSBrooks Davisstructure (see below) as a value-result parameter. 386ad37a95bSBrooks DavisThe 3878996a9d5SRuslan Ermilov.Va ifcr_count 388ad37a95bSBrooks Davisfield should be set to the number of 389ad37a95bSBrooks Davis.Dv IFNAMSIZ 390ad37a95bSBrooks Davissized strings that can be fit in the buffer pointed to by 3918996a9d5SRuslan Ermilov.Va ifcr_buffer . 3928996a9d5SRuslan ErmilovOn return, 3938996a9d5SRuslan Ermilov.Va ifcr_total 394d1ed27b6SJens Schweikhardtwill be set to the number of clonable interfaces and the buffer pointed 395ad37a95bSBrooks Davisto by 3968996a9d5SRuslan Ermilov.Va ifcr_buffer 397ad37a95bSBrooks Daviswill be filled with the names of clonable interfaces aligned on 398ad37a95bSBrooks Davis.Dv IFNAMSIZ 399ad37a95bSBrooks Davisboundaries. 400afe61c15SRodney W. Grimes.El 401afe61c15SRodney W. Grimes.Bd -literal 402afe61c15SRodney W. Grimes/* 403afe61c15SRodney W. Grimes* Structure used in SIOCAIFCONF request. 404afe61c15SRodney W. Grimes*/ 405afe61c15SRodney W. Grimesstruct ifaliasreq { 406afe61c15SRodney W. Grimes char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */ 407afe61c15SRodney W. Grimes struct sockaddr ifra_addr; 408afe61c15SRodney W. Grimes struct sockaddr ifra_broadaddr; 409afe61c15SRodney W. Grimes struct sockaddr ifra_mask; 410afe61c15SRodney W. Grimes}; 411afe61c15SRodney W. Grimes.Ed 412afe61c15SRodney W. Grimes.Pp 413afe61c15SRodney W. Grimes.Bd -literal 414afe61c15SRodney W. Grimes/* 415afe61c15SRodney W. Grimes* Structure used in SIOCGIFCONF request. 416afe61c15SRodney W. Grimes* Used to retrieve interface configuration 417afe61c15SRodney W. Grimes* for machine (useful for programs which 418afe61c15SRodney W. Grimes* must know all networks accessible). 419afe61c15SRodney W. Grimes*/ 420afe61c15SRodney W. Grimesstruct ifconf { 421afe61c15SRodney W. Grimes int ifc_len; /* size of associated buffer */ 422afe61c15SRodney W. Grimes union { 423afe61c15SRodney W. Grimes caddr_t ifcu_buf; 424afe61c15SRodney W. Grimes struct ifreq *ifcu_req; 425afe61c15SRodney W. Grimes } ifc_ifcu; 426afe61c15SRodney W. Grimes#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */ 427afe61c15SRodney W. Grimes#define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */ 428afe61c15SRodney W. Grimes}; 429afe61c15SRodney W. Grimes.Ed 430ad37a95bSBrooks Davis.Pp 431ad37a95bSBrooks Davis.Bd -literal 432ad37a95bSBrooks Davis/* Structure used in SIOCIFGCLONERS request. */ 433ad37a95bSBrooks Davisstruct if_clonereq { 434ad37a95bSBrooks Davis int ifcr_total; /* total cloners (out) */ 435ad37a95bSBrooks Davis int ifcr_count; /* room for this many in user buffer */ 436ad37a95bSBrooks Davis char *ifcr_buffer; /* buffer for cloner names */ 437ad37a95bSBrooks Davis}; 438ad37a95bSBrooks Davis.Ed 439215940b3SXin LI.Bd -literal 440215940b3SXin LI/* Structure used in SIOCGIFDESCR and SIOCSIFDESCR requests */ 441215940b3SXin LIstruct ifreq_buffer { 442215940b3SXin LI size_t length; /* length of the buffer */ 443215940b3SXin LI void *buffer; /* pointer to userland space buffer */ 444215940b3SXin LI}; 445215940b3SXin LI.Ed 446afe61c15SRodney W. Grimes.Sh SEE ALSO 447afe61c15SRodney W. Grimes.Xr ioctl 2 , 4480b992c1dSWolfram Schneider.Xr socket 2 , 449afe61c15SRodney W. Grimes.Xr intro 4 , 450afe61c15SRodney W. Grimes.Xr config 8 , 451b5e7e999SRuslan Ermilov.Xr routed 8 , 452b5e7e999SRuslan Ermilov.Xr ifnet 9 453afe61c15SRodney W. Grimes.Sh HISTORY 454afe61c15SRodney W. GrimesThe 455afe61c15SRodney W. Grimes.Nm netintro 456afe61c15SRodney W. Grimesmanual appeared in 457afe61c15SRodney W. Grimes.Bx 4.3 tahoe . 458