]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - lib/libc/sys/setfib.2
awk: Merge upstream 2nd Edition Awk Book
[FreeBSD/FreeBSD.git] / lib / libc / sys / setfib.2
1 .\" Copyright (c) 2008 Cisco Systems.  All rights reserved.
2 .\"    Author: Julian Elischer
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Neither the name of the Cisco Systems nor the names of its employees
10 .\"    may be used to endorse or promote products derived from this software
11 .\"    without specific prior written permission.
12 .\"
13 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND
14 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS BE LIABLE
17 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 .\" SUCH DAMAGE.
24 .\"
25 .Dd March 19, 2012
26 .Dt SETFIB 2
27 .Os
28 .Sh NAME
29 .Nm setfib
30 .Nd set the default FIB (routing table) for the calling process
31 .Sh LIBRARY
32 .Lb libc
33 .Sh SYNOPSIS
34 .In sys/socket.h
35 .Ft int
36 .Fn setfib "int fib"
37 .Sh DESCRIPTION
38 The
39 .Fn setfib
40 system call sets the associated fib for all sockets opened
41 subsequent to the call, to be that of the argument
42 .Fa fib .
43 The
44 .Fa fib
45 argument
46 must be greater than or equal to 0
47 and less than the current system maximum which
48 may be retrieved by the
49 .Va net.fibs
50 sysctl.
51 The system maximum is set in the kernel configuration file with
52 .Bd -ragged -offset indent
53 .Cd "options ROUTETABLES=" Ns Em N
54 .Ed
55 .Pp
56 or in
57 .Pa /boot/loader.conf
58 with
59 .Pp
60 .Dl net.fibs= Ns Qq Em N
61 .Pp
62 where
63 .Em N
64 is an integer.
65 This maximum is capped at 65536 due to the implementation storing
66 the fib number in a 16-bit field in the
67 .Xr mbuf 9
68 packet header, however it is not suggested that one use such a large number
69 as memory is allocated for every FIB regardless of whether it is used, and
70 there are places where all FIBs are iterated over.
71 .Pp
72 The default fib of the process will be applied to all protocol families
73 that support multiple fibs, and ignored by those that do not.
74 The default fib for a process may be overridden for a socket with the use
75 of the
76 .Dv SO_SETFIB
77 socket option.
78 .Sh RETURN VALUES
79 .Rv -std setfib
80 .Sh ERRORS
81 The
82 .Fn setfib
83 system call
84 will fail and no action will be taken and return
85 .Er EINVAL
86 if the
87 .Fa fib
88 argument is greater than the current system maximum.
89 .Sh SEE ALSO
90 .Xr setfib 1 ,
91 .Xr setsockopt 2
92 .Sh STANDARDS
93 The
94 .Fn setfib
95 system call is a
96 .Fx
97 extension however similar extensions
98 have been added to many other
99 .Ux
100 style kernels.
101 .Sh HISTORY
102 The
103 .Fn setfib
104 function appeared in
105 .Fx 7.1 .