summaryrefslogtreecommitdiff
path: root/lib/libc/rpc/bindresvport.3
blob: 4960277753fddf8dd78376d63dec1ae86f2eb98a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
.\"	$OpenBSD: bindresvport.3,v 1.11 1999/07/09 13:35:22 aaron Exp $
.\"
.Dd August 9, 1997
.Dt BINDRESVPORT 3
.Os
.Sh NAME
.Nm bindresvport
.Nd bind a socket to a privileged IP port
.Sh SYNOPSIS
.Fd #include <sys/types.h>
.Fd #include <netinet/in.h>
.Ft int
.Fn bindresvport "int sd" "struct sockaddr_in *sin"
.Sh DESCRIPTION
.Fn bindresvport
is used to bind a socket descriptor to a privileged
.Tn IP
port, that is, a port number in the range 0-1023.
.Fa sd
is a socket descriptor that was returned by a call to
.Xr socket 2 .
.Pp
Only root can bind to a privileged port; this call will fail for any
other users.
.Pp
If the value of sin->sin_port is non-zero,
.Fn bindresvport
attempts to use the specified port.  If that fails, it
chooses another privileged port number automatically.
.Sh RETURN VALUES
.Fn bindresvport
returns 0 if it is successful, otherwise \-1 is returned and
.Va errno
set to reflect the cause of the error.
.Sh ERRORS
The
.Fn bindresvport
function fails if:
.Bl -tag -width Er
.It Bq Er EBADF
.Fa sd
is not a valid descriptor.
.It Bq Er ENOTSOCK
.Fa sd
is not a socket.
.It Bq Er EADDRNOTAVAIL
The specified address is not available from the local machine.
.It Bq Er EADDRINUSE
The specified address is already in use.
.It Bq Er EINVAL
The socket is already bound to an address.
.It Bq Er EACCES
The requested address is protected, and the current user
has inadequate permission to access it.
.It Bq Er EFAULT
The
.Fa name
parameter is not in a valid part of the user
address space.
.It Bq Er ENOBUFS
Insufficient resources were available in the system
to perform the operation.
.It Bq Er EPFNOSUPPORT
The protocol family has not been configured into the
system or no implementation for it exists.
.El
.Sh SEE ALSO
.Xr bind 2 ,
.Xr socket 2 ,
.Xr rresvport 3