summaryrefslogtreecommitdiff
path: root/lib/libradius/libradius.3
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libradius/libradius.3')
-rw-r--r--lib/libradius/libradius.3317
1 files changed, 0 insertions, 317 deletions
diff --git a/lib/libradius/libradius.3 b/lib/libradius/libradius.3
deleted file mode 100644
index 25ccdc09d8168..0000000000000
--- a/lib/libradius/libradius.3
+++ /dev/null
@@ -1,317 +0,0 @@
-.\" Copyright 1998 Juniper Networks, Inc.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd July 29, 1998
-.Dt LIBRADIUS 3
-.Os FreeBSD
-.Sh NAME
-.Nm libradius
-.Nd RADIUS client library
-.Sh SYNOPSIS
-.Fd #include <radlib.h>
-.Ft int
-.Fn rad_add_server "struct rad_handle *h" "const char *host" "int port" "const char *secret" "int timeout" "int max_tries"
-.Ft void
-.Fn rad_close "struct rad_handle *h"
-.Ft int
-.Fn rad_config "struct rad_handle *h" "const char *file"
-.Ft int
-.Fn rad_create_request "struct rad_handle *h" "int code"
-.Ft struct in_addr
-.Fn rad_cvt_addr "const void *data"
-.Ft u_int32_t
-.Fn rad_cvt_int "const void *data"
-.Ft char *
-.Fn rad_cvt_string "const void *data" "size_t len"
-.Ft int
-.Fn rad_get_attr "struct rad_handle *h" "const void **data" "size_t *len"
-.Ft struct rad_handle *
-.Fn rad_open "void"
-.Ft int
-.Fn rad_put_addr "struct rad_handle *h" "int type" "struct in_addr addr"
-.Ft int
-.Fn rad_put_attr "struct rad_handle *h" "int type" "const void *data" "size_t len"
-.Ft int
-.Fn rad_put_int "struct rad_handle *h" "int type" "u_int32_t value"
-.Ft int
-.Fn rad_put_string "struct rad_handle *h" "int type" "const char *str"
-.Ft int
-.Fn rad_send_request "struct rad_handle *h"
-.Ft const char *
-.Fn rad_strerror "struct rad_handle *h"
-.Sh DESCRIPTION
-The
-.Nm
-library implements the client side of the Remote Authentication
-Dial In User Service (RADIUS). RADIUS, defined in RFC 2138, allows
-clients to perform authentication by means of network requests to
-remote authentication servers.
-.Sh INITIALIZATION
-To use the library, an application must first call
-.Fn rad_open
-to obtain a
-.Va struct rad_handle * ,
-which provides the context for subsequent operations.
-Calls to
-.Fn rad_open
-always succeed unless insufficient virtual memory is available. If
-the necessary memory cannot be allocated,
-.Fn rad_open
-returns
-.Dv NULL .
-.Pp
-Before issuing any RADIUS requests, the library must be made aware
-of the servers it can contact. The easiest way to configure the
-library is to call
-.Fn rad_config .
-.Fn rad_config
-causes the library to read a configuration file whose format is
-described in
-.Xr radius.conf 5 .
-The pathname of the configuration file is passed as the
-.Va file
-argument to
-.Fn rad_config .
-This argument may also be given as
-.Dv NULL ,
-in which case the standard configuration file
-.Pa /etc/radius.conf
-is used.
-.Fn rad_config
-returns 0 on success, or -1 if an error occurs.
-.Pp
-The library can also be configured programmatically by calls to
-.Fn rad_add_server .
-The
-.Va host
-parameter specifies the server host, either as a fully qualified
-domain name or as a dotted-quad IP address in text form.
-The
-.Va port
-parameter specifies the UDP port to contact on the server. If
-.Va port
-is given as 0, the library looks up the
-.Ql radius/udp
-service in the network services database, and uses the port found
-there. If no entry is found, the library uses port 1812, the standard
-RADIUS port. The shared secret for the server host is passed to the
-.Va secret
-parameter.
-It may be any NUL-terminated string of bytes. The RADIUS protocol
-ignores all but the leading 128 bytes of the shared secret.
-The timeout for receiving replies from the server is passed to the
-.Va timeout
-parameter, in units of seconds. The maximum number of repeated
-requests to make before giving up is passed into the
-.Va max_tries
-parameter.
-.Fn rad_add_server
-returns 0 on success, or -1 if an error occurs.
-.Pp
-.Fn rad_add_server
-may be called multiple times, and it may be used together with
-.Fn rad_config .
-At most 10 servers may be specified.
-When multiple servers are given, they are tried in round-robin
-fashion until a valid response is received, or until each server's
-.Va max_tries
-limit has been reached.
-.Sh CREATING A RADIUS REQUEST
-A RADIUS request consists of a code specifying the kind of request,
-and zero or more attributes which provide additional information. To
-begin constructing a new request, call
-.Fn rad_create_request .
-In addition to the usual
-.Va struct rad_handle * ,
-this function takes a
-.Va code
-parameter which specifies the type of the request. Most often this
-will be
-.Dv RAD_ACCESS_REQUEST .
-.Fn rad_create_request
-returns 0 on success, or -1 on if an error occurs.
-.Pp
-After the request has been created with
-.Fn rad_create request ,
-attributes can be attached to it. This is done through calls to
-.Fn rad_put_addr ,
-.Fn rad_put_int ,
-and
-.Fn rad_put_string .
-Each accepts a
-.Va type
-parameter identifying the attribute, and a value which may be
-an Internet address, an integer, or a NUL-terminated string,
-respectively.
-.Pp
-The library also provides a function
-.Fn rad_put_attr
-which can be used to supply a raw, uninterpreted attribute. The
-.Va data
-argument points to an array of bytes, and the
-.Va len
-argument specifies its length.
-.Pp
-The
-.Fn rad_put_X
-functions return 0 on success, or -1 if an error occurs.
-.Sh SENDING THE REQUEST AND RECEIVING THE RESPONSE
-After the RADIUS request has been constructed, it is sent by means
-of
-.Fn rad_send_request .
-This function sends the request and waits for a valid reply,
-retrying the defined servers in round-robin fashion as necessary.
-If a valid response is received,
-.Fn rad_send_request
-returns the RADIUS code which specifies the type of the response.
-This will typically be
-.Dv RAD_ACCESS_ACCEPT ,
-.Dv RAD_ACCESS_REJECT ,
-or
-.Dv RAD_ACCESS_CHALLENGE .
-If no valid response is received,
-.Fn rad_send_request
-returns -1.
-.Pp
-Like RADIUS requests, each response may contain zero or more
-attributes. After a response has been received successfully by
-.Fn rad_send_request ,
-its attributes can be extracted one by one using
-.Fn rad_get_attr .
-Each time
-.Fn rad_get_attr
-is called, it gets the next attribute from the current response, and
-stores a pointer to the data and the length of the data via the
-reference parameters
-.Va data
-and
-.Va len ,
-respectively. Note that the data resides in the response itself,
-and must not be modified.
-A successful call to
-.Fn rad_get_attr
-returns the RADIUS attribute type.
-If no more attributes remain in the current response,
-.Fn rad_get_attr
-returns 0.
-If an error such as a malformed attribute is detected, -1 is
-returned.
-.Pp
-The common types of attributes can be decoded using
-.Fn rad_cvt_addr ,
-.Fn rad_cvt_int ,
-and
-.Fn rad_cvt_string .
-These functions accept a pointer to the attribute data, which should
-have been obtained using
-.Fn rad_get_attr .
-In the case of
-.Fn rad_cvt_string ,
-the length
-.Va len
-must also be given. These functions interpret the attribute as an
-Internet address, an integer, or a string, respectively, and return
-its value.
-.Fn rad_cvt_string
-returns its value as a NUL-terminated string in dynamically
-allocated memory. The application should free the string using
-.Xr free 3
-when it is no longer needed.
-.Pp
-If insufficient virtual memory is available,
-.Fn rad_cvt_string
-returns
-.Dv NULL .
-.Fn rad_cvt_addr
-and
-.Fn rad_cvt_int
-cannot fail.
-.Sh OBTAINING ERROR MESSAGES
-Those functions which accept a
-.Va struct rad_handle *
-argument record an error message if they fail. The error message
-can be retrieved by calling
-.Fn rad_strerror .
-The message text is overwritten on each new error for the given
-.Va struct rad_handle * .
-Thus the message must be copied if it is to be preserved through
-subsequent library calls using the same handle.
-.Sh CLEANUP
-To free the resources used by the RADIUS library, call
-.Fn rad_close .
-.Sh RETURN VALUES
-The following functions return a non-negative value on success. If
-they detect an error, they return -1 and record an error message
-which can be retrieved using
-.Fn rad_strerror .
-.Pp
-.Bl -item -offset indent -compact
-.It
-.Fn rad_add_server
-.It
-.Fn rad_config
-.It
-.Fn rad_create_request
-.It
-.Fn rad_get_attr
-.It
-.Fn rad_put_addr
-.It
-.Fn rad_put_attr
-.It
-.Fn rad_put_int
-.It
-.Fn rad_put_string
-.It
-.Fn rad_send_request
-.El
-.Pp
-The following functions return a
-.No non- Ns Dv NULL
-pointer on success. If they are unable to allocate sufficient
-virtual memory, they return
-.Dv NULL ,
-without recording an error message.
-.Pp
-.Bl -item -offset indent -compact
-.It
-.Fn rad_cvt_string
-.It
-.Fn rad_open
-.El
-.Sh FILES
-.Pa /etc/radius.conf
-.Sh SEE ALSO
-.Xr radius.conf 5
-.Rs
-.%A C. Rigney, et al
-.%T Remote Authentication Dial In User Service (RADIUS)
-.%O RFC 2138
-.Re
-.Sh AUTHORS
-This software was written by
-.An John Polstra ,
-and donated to the FreeBSD project by Juniper Networks, Inc.