<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<appendix xml:id="radius.constants" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
 &reftitle.constants;
 &extension.constants;
 
 <variablelist>
  <varlistentry xml:id="radius.constants.radius-mppe-key-len">
   <term>
    <constant>RADIUS_MPPE_KEY_LEN</constant>
     (<type>int</type>)
   </term>
   <listitem>
    <simpara>
     The maximum length of MPPE keys.
    </simpara>
   </listitem>
  </varlistentry>
 </variablelist>

 <section xml:id="radius.constants.options">
  <title>RADIUS Options</title>

  <para>
   Several RADIUS functions accept option flags as bitmasks. The constants
   representing those flags are listed below.
  </para>

  <variablelist>
   <varlistentry xml:id="constant.radius-option-salt">
    <term>
     <constant>RADIUS_OPTION_SALT</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      When set, this option will result in the attribute value being
      salt-encrypted.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-option-tagged">
    <term>
     <constant>RADIUS_OPTION_TAGGED</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      When set, this option will result in the attribute value being tagged
      with the value of the tag parameter.
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
 </section>

 <section xml:id="radius.constants.packets">
  <title>RADIUS Packet Types</title>

  <para>
   RADIUS packets, whether requests or responses, always include a type. These
   constants are provided to make it easier to specify types when using
   <function>radius_create_request</function> and when comparing the result of
   <function>radius_send_request</function>.
  </para>

  <variablelist>
   <varlistentry xml:id="constant.radius-access-request">
    <term>
     <constant>RADIUS_ACCESS_REQUEST</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      An Access-Request, used to authenticate a user against a RADIUS server.
      Access request packets must include a
      <link linkend="constant.radius-nas-ip-address"><constant>RADIUS_NAS_IP_ADDRESS</constant></link>
      or a
      <link linkend="constant.radius-nas-identifier"><constant>RADIUS_NAS_IDENTIFIER</constant></link>
      attribute, must also include a
      <link linkend="constant.radius-user-password"><constant>RADIUS_USER_PASSWORD</constant></link>,
      <link linkend="constant.radius-chap-password"><constant>RADIUS_CHAP_PASSWORD</constant></link>
      or a
      <link linkend="constant.radius-state"><constant>RADIUS_STATE</constant></link>
      attribute, and should include a
      <link linkend="constant.radius-user-name"><constant>RADIUS_USER_NAME</constant></link>
      attribute.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-access-accept">
    <term>
     <constant>RADIUS_ACCESS_ACCEPT</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      An Access-Accept response to an Access-Request indicating that the
      RADIUS server authenticated the user successfully.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-access-reject">
    <term>
     <constant>RADIUS_ACCESS_REJECT</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      An Access-Reject response to an Access-Request indicating that the
      RADIUS server could not authenticate the user.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-access-challenge">
    <term>
     <constant>RADIUS_ACCESS_CHALLENGE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      An Access-Challenge response to an Access-Request indicating that the
      RADIUS server requires further information in another Access-Request
      before authenticating the user.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-accounting-request">
    <term>
     <constant>RADIUS_ACCOUNTING_REQUEST</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      An Accounting-Request, used to convey accounting information for a
      service to the RADIUS server.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-accounting-response">
    <term>
     <constant>RADIUS_ACCOUNTING_RESPONSE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      An Accounting-Response response to an Accounting-Request.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-coa-request">
    <term>
     <constant>RADIUS_COA_REQUEST</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      A CoA-Request, sent from the RADIUS server to indicate that the
      authorisations within the user session have changed. A response must be
      sent in the form of a CoA-ACK or a CoA-NAK.
     </para>
     <para>
      This constant is available in PECL radius 1.3.0 and later.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-coa-ack">
    <term>
     <constant>RADIUS_COA_ACK</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      A CoA-ACK, sent to the RADIUS server to indicate that the user
      authorisations have been updated.
     </para>
     <para>
      This constant is available in PECL radius 1.3.0 and later.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-coa-nak">
    <term>
     <constant>RADIUS_COA_NAK</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      A CoA-NAK, sent to the RADIUS server to indicate that the user
      authorisations could not be updated.
     </para>
     <para>
      This constant is available in PECL radius 1.3.0 and later.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-disconnect-request">
    <term>
     <constant>RADIUS_DISCONNECT_REQUEST</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      A Disconnect-Request, sent from the RADIUS server to indicate that the
      user session must be terminated.
     </para>
     <para>
      This constant is available in PECL radius 1.3.0 and later.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-disconnect-ack">
    <term>
     <constant>RADIUS_DISCONNECT_ACK</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      A Disconnect-ACK, sent to the RADIUS server to indicate that the user
      session has been terminated.
     </para>
     <para>
      This constant is available in PECL radius 1.3.0 and later.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-disconnect-nak">
    <term>
     <constant>RADIUS_DISCONNECT_NAK</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      A Disconnect-NAK, sent to the RADIUS server to indicate that the user
      session could not be terminated.
     </para>
     <para>
      This constant is available in PECL radius 1.3.0 and later.
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
 </section>

 <section xml:id="radius.constants.attributes">
  <title>RADIUS Attribute Types</title>

  <para>
   These constants define RADIUS attribute types that can be used with
   <function>radius_put_addr</function>, <function>radius_put_attr</function>,
   <function>radius_put_int</function> and
   <function>radius_put_string</function>.
  </para>

  <variablelist>
   <varlistentry xml:id="constant.radius-user-name">
    <term>
     <constant>RADIUS_USER_NAME</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The User-Name attribute. The attribute value is expected to be a
      <type>string</type> containing the name of the user being authenticated,
      and can be set using <function>radius_put_attr</function>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-user-password">
    <term>
     <constant>RADIUS_USER_PASSWORD</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The User-Password attribute. The attribute value is expected to be a
      <type>string</type> containing the user's password, and can be set using
      <function>radius_put_attr</function>. This value will be obfuscated on
      transmission as described in
      <link xlink:href="&url.rfc;2865">section 5.2 of RFC 2865</link>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-chap-password">
    <term>
     <constant>RADIUS_CHAP_PASSWORD</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Chap-Password attribute. The attribute value is expected to be a
      <type>string</type> with the first byte containing the CHAP identifier,
      and the subsequent 16 bytes containing the MD5 hash of the CHAP
      identifier, the plaintext password and the CHAP challenge value
      concatenated together. Note that the CHAP challenge value should also be
      sent separately in a
      <link linkend="constant.radius-chap-challenge"><constant>RADIUS_CHAP_CHALLENGE</constant></link>
      attribute.
     </para>
     <para>
      <example>
       <title>Using CHAP passwords</title>
       <programlisting role="php">
<![CDATA[
<?php
// Firstly, we'll create an authentication handle and request.
$radh = radius_auth_open();
radius_add_server($radh, $server, $port, $secret, 3, 3);
radius_create_request($radh, RADIUS_ACCESS_REQUEST);

// Assuming $password contains the plaintext password, we now:

// Generate a challenge.
$challenge = mt_rand();

// Specify a CHAP identifier.
$ident = 1;

// Add the Chap-Password attribute.
$cp = md5(pack('Ca*', $ident, $password.$challenge), true);
radius_put_attr($radh, RADIUS_CHAP_PASSWORD, pack('C', $ident).$cp);

// Add the Chap-Challenge attribute.
radius_put_attr($radh, RADIUS_CHAP_CHALLENGE, $challenge);

/* From here, you would add the remaining attributes and
 * call radius_send_request(). */
?>
]]>
       </programlisting>
      </example>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-nas-ip-address">
    <term>
     <constant>RADIUS_NAS_IP_ADDRESS</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The NAS-IP-Address attribute. The attribute value is expected to the IP
      address of the RADIUS client encoded as an <type>int</type>, which
      can be set using <function>radius_put_addr</function>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-nas-port">
    <term>
     <constant>RADIUS_NAS_PORT</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The NAS-Port attribute. The attribute value is expected to be the
      physical port of the user on the RADIUS client encoded as an
      <type>int</type>, which can be set using
      <function>radius_put_int</function>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-service-type">
    <term>
     <constant>RADIUS_SERVICE_TYPE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Service-Type attribute. The attribute value indicates the service
      type the user is requesting, and is expected to be an
      <type>int</type>, which can be set using
      <function>radius_put_int</function>.
     </para>
     <para>
      A number of constants are provided to represent the possible values of
      this attribute. They include:
      <simplelist>
       <member><constant>RADIUS_LOGIN</constant></member>
       <member><constant>RADIUS_FRAMED</constant></member>
       <member><constant>RADIUS_CALLBACK_LOGIN</constant></member>
       <member><constant>RADIUS_CALLBACK_FRAMED</constant></member>
       <member><constant>RADIUS_OUTBOUND</constant></member>
       <member><constant>RADIUS_ADMINISTRATIVE</constant></member>
       <member><constant>RADIUS_NAS_PROMPT</constant></member>
       <member><constant>RADIUS_AUTHENTICATE_ONLY</constant></member>
       <member><constant>RADIUS_CALLBACK_NAS_PROMPT</constant></member>
      </simplelist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-framed-protocol">
    <term>
     <constant>RADIUS_FRAMED_PROTOCOL</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Framed-Protocol attribute. The attribute value is expected to be an
      <type>int</type> indicating the framing to be used for framed
      access, and can be set using <function>radius_put_int</function>. The
      possible attribute values include these constants:
      <simplelist>
       <member><constant>RADIUS_PPP</constant></member>
       <member><constant>RADIUS_SLIP</constant></member>
       <member><constant>RADIUS_ARAP</constant></member>
       <member><constant>RADIUS_GANDALF</constant></member>
       <member><constant>RADIUS_XYLOGICS</constant></member>
      </simplelist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-framed-ip-address">
    <term>
     <constant>RADIUS_FRAMED_IP_ADDRESS</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Framed-IP-Address attribute. The attribute value is expected to be
      the address of the user's network encoded as an <type>int</type>,
      which can be set using <function>radius_put_addr</function> and
      retrieved using <function>radius_cvt_addr</function>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-framed-ip-netmask">
    <term>
     <constant>RADIUS_FRAMED_IP_NETMASK</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Framed-IP-Netmask attribute. The attribute value is expected to be
      the netmask of the user's network encoded as an <type>int</type>,
      which can be set using <function>radius_put_addr</function> and
      retrieved using <function>radius_cvt_addr</function>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-framed-routing">
    <term>
     <constant>RADIUS_FRAMED_ROUTING</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Framed-Routing attribute. The attribute value is expected to be an
      <type>int</type> indicating the routing method for the user, which
      can be set using <function>radius_put_int</function>.
     </para>
     <para>
      Possible values include:
      <simplelist>
       <member><literal>0</literal>: No routing</member>
       <member><literal>1</literal>: Send routing packets</member>
       <member><literal>2</literal>: Listen for routing packets</member>
       <member><literal>3</literal>: Send and listen</member>
      </simplelist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-filter-id">
    <term>
     <constant>RADIUS_FILTER_ID</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Filter-ID attribute. The attribute value is expected to be an
      implementation-specific, human-readable <type>string</type> of filters,
      which can be set using <function>radius_put_attr</function>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-framed-mtu">
    <term>
     <constant>RADIUS_FRAMED_MTU</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Framed-MTU attribute. The attribute value is expected to be an
      <type>int</type> indicating the MTU to be configured for the user,
      and can be set using <function>radius_put_int</function>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-framed-compression">
    <term>
     <constant>RADIUS_FRAMED_COMPRESSION</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Framed-Compression attribute. The attribute value is expected to be
      an <type>int</type> indicating the compression protocol to be used,
      and can be set using <function>radius_put_int</function>. Possible
      values include these constants:
      <simplelist>
       <member><constant>RADIUS_COMP_NONE</constant>: No compression</member>
       <member><constant>RADIUS_COMP_VJ</constant>: VJ TCP/IP header compression</member>
       <member><constant>RADIUS_COMP_IPXHDR</constant>: IPX header compression</member>
       <member>
        <constant>RADIUS_COMP_STAC_LZS</constant>:
        Stac-LZS compression (added in PECL radius 1.3.0b2)
       </member>
      </simplelist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-login-ip-host">
    <term>
     <constant>RADIUS_LOGIN_IP_HOST</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Login-IP-Host attribute. The attribute value is expected to the IP
      address to connect the user to, encoded as an <type>int</type>,
      which can be set using <function>radius_put_addr</function>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-login-service">
    <term>
     <constant>RADIUS_LOGIN_SERVICE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Login-Service attribute. The attribute value is an
      <type>int</type> indicating the service to connect the user to on
      the login host. The value can be converted to a PHP integer via
      <function>radius_cvt_int</function>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-login-tcp-port">
    <term>
     <constant>RADIUS_LOGIN_TCP_PORT</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Login-TCP-Port attribute. The attribute value is an
      <type>int</type> indicating the port to connect the user to on the
      login host. The value can be converted to a PHP integer via
      <function>radius_cvt_int</function>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-reply-message">
    <term>
     <constant>RADIUS_REPLY_MESSAGE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Reply-Message attribute. The attribute value is a
      <type>string</type> containing text that may be displayed to the user in
      response to an access request.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-callback-number">
    <term>
     <constant>RADIUS_CALLBACK_NUMBER</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Callback-Number attribute. The attribute value is a
      <type>string</type> containing the dialing string to use for callback.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-callback-id">
    <term>
     <constant>RADIUS_CALLBACK_ID</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Callback-Id attribute. The attribute value is a <type>string</type>
      containing an implementation-specific name of the place to be called.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-framed-route">
    <term>
     <constant>RADIUS_FRAMED_ROUTE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Framed-Route attribute. The attribute value is a <type>string</type>
      containing an implementation-specific set of routes to be configured for
      the user.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-framed-ipx-network">
    <term>
     <constant>RADIUS_FRAMED_IPX_NETWORK</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Framed-IPX-Network attribute. The attribute value is an
      <type>int</type> containing the IPX network to be configured for the
      user, or <literal>0xFFFFFFFE</literal> to indicate that the RADIUS
      client should select the network, and can be accessed via
      <function>radius_cvt_int</function>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-state">
    <term>
     <constant>RADIUS_STATE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The State attribute. The attribute value is an implementation-defined
      <type>string</type> included in an Access-Challenge from a server that
      must be included in the subsequent Access-Request, and can be set using
      <function>radius_put_attr</function>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-class">
    <term>
     <constant>RADIUS_CLASS</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Class attribute. The attribute value is an arbitrary
      <type>string</type> included in an Access-Accept message that should
      then be sent to the accounting server in Accounting-Request messages,
      and can be set using <function>radius_put_attr</function>.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-vendor-specific">
    <term>
     <constant>RADIUS_VENDOR_SPECIFIC</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      The Vendor-Specific attribute. In general, vendor attribute values
      should be set using <function>radius_put_vendor_addr</function>,
      <function>radius_put_vendor_attr</function>,
      <function>radius_put_vendor_int</function> and
      <function>radius_put_vendor_string</function>, rather than directly.
     </para>
     <para>
      This constant is mostly useful when interpreting vendor specific
      attributes in responses from a RADIUS server; when a vendor specific
      attribute is received, the <function>radius_get_vendor_attr</function>
      function should be used to access the vendor ID, attribute type and
      attribute value.
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-session-timeout">
    <term>
     <constant>RADIUS_SESSION_TIMEOUT</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Session timeout
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-idle-timeout">
    <term>
     <constant>RADIUS_IDLE_TIMEOUT</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Idle timeout
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-termination-action">
    <term>
     <constant>RADIUS_TERMINATION_ACTION</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Termination action
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-called-station-id">
    <term>
     <constant>RADIUS_CALLED_STATION_ID</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Called Station Id
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-calling-station-id">
    <term>
     <constant>RADIUS_CALLING_STATION_ID</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Calling Station Id
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-nas-identifier">
    <term>
     <constant>RADIUS_NAS_IDENTIFIER</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      NAS ID
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-proxy-state">
    <term>
     <constant>RADIUS_PROXY_STATE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Proxy State
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-login-lat-service">
    <term>
     <constant>RADIUS_LOGIN_LAT_SERVICE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Login LAT Service
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-login-lat-node">
    <term>
     <constant>RADIUS_LOGIN_LAT_NODE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Login LAT Node
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-login-lat-group">
    <term>
     <constant>RADIUS_LOGIN_LAT_GROUP</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Login LAT Group
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-framed-appletalk-link">
    <term>
     <constant>RADIUS_FRAMED_APPLETALK_LINK</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Framed Appletalk Link
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-framed-appletalk-network">
    <term>
     <constant>RADIUS_FRAMED_APPLETALK_NETWORK</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Framed Appletalk Network
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-framed-appletalk-zone">
    <term>
     <constant>RADIUS_FRAMED_APPLETALK_ZONE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Framed Appletalk Zone
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-chap-challenge">
    <term>
     <constant>RADIUS_CHAP_CHALLENGE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Challenge
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-nas-port-type">
    <term>
     <constant>RADIUS_NAS_PORT_TYPE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      NAS port type, one of:
      <simplelist>
       <member><constant>RADIUS_ASYNC</constant></member>
       <member><constant>RADIUS_SYNC</constant></member>
       <member><constant>RADIUS_ISDN_SYNC</constant></member>
       <member><constant>RADIUS_ISDN_ASYNC_V120</constant></member>
       <member><constant>RADIUS_ISDN_ASYNC_V110</constant></member>
       <member><constant>RADIUS_VIRTUAL</constant></member>
       <member><constant>RADIUS_PIAFS</constant></member>
       <member><constant>RADIUS_HDLC_CLEAR_CHANNEL</constant></member>
       <member><constant>RADIUS_X_25</constant></member>
       <member><constant>RADIUS_X_75</constant></member>
       <member><constant>RADIUS_G_3_FAX</constant></member>
       <member><constant>RADIUS_SDSL</constant></member>
       <member><constant>RADIUS_ADSL_CAP</constant></member>
       <member><constant>RADIUS_ADSL_DMT</constant></member>
       <member><constant>RADIUS_IDSL</constant></member>
       <member><constant>RADIUS_ETHERNET</constant></member>
       <member><constant>RADIUS_XDSL</constant></member>
       <member><constant>RADIUS_CABLE</constant></member>
       <member><constant>RADIUS_WIRELESS_OTHER</constant></member>
       <member><constant>RADIUS_WIRELESS_IEEE_802_11</constant></member>
      </simplelist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-port-limit">
    <term>
     <constant>RADIUS_PORT_LIMIT</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Port Limit
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-login-lat-port">
    <term>
     <constant>RADIUS_LOGIN_LAT_PORT</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Login LAT Port
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-connect-info">
    <term>
     <constant>RADIUS_CONNECT_INFO</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Connect info
     </para>
    </listitem>
   </varlistentry>
    <varlistentry xml:id="constant.radius-acct-status-type">
    <term>
     <constant>RADIUS_ACCT_STATUS_TYPE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Accounting status type, one of:
      <simplelist>
       <member><constant>RADIUS_START</constant></member>
       <member><constant>RADIUS_STOP</constant></member>
       <member><constant>RADIUS_ACCOUNTING_ON</constant></member>
       <member><constant>RADIUS_ACCOUNTING_OFF</constant></member>
      </simplelist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-acct-delay-time">
    <term>
     <constant>RADIUS_ACCT_DELAY_TIME</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Accounting delay time
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-acct-input-octets">
    <term>
     <constant>RADIUS_ACCT_INPUT_OCTETS</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Accounting input bytes
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-acct-output-octets">
    <term>
     <constant>RADIUS_ACCT_OUTPUT_OCTETS</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Accounting output bytes
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-acct-session-id">
    <term>
     <constant>RADIUS_ACCT_SESSION_ID</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Accounting session ID
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-acct-authentic">
    <term>
     <constant>RADIUS_ACCT_AUTHENTIC</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Accounting authentic, one of:
      <simplelist>
       <member><constant>RADIUS_AUTH_RADIUS</constant></member>
       <member><constant>RADIUS_AUTH_LOCAL</constant></member>
       <member><constant>RADIUS_AUTH_REMOTE</constant></member>
      </simplelist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-acct-session-time">
    <term>
     <constant>RADIUS_ACCT_SESSION_TIME</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Accounting session time
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-acct-input-packets">
    <term>
     <constant>RADIUS_ACCT_INPUT_PACKETS</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Accounting input packets
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-acct-output-packets">
    <term>
     <constant>RADIUS_ACCT_OUTPUT_PACKETS</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Accounting output packets
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-acct-terminate-cause">
    <term>
     <constant>RADIUS_ACCT_TERMINATE_CAUSE</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Accounting terminate cause, one of:
      <simplelist>
       <member><constant>RADIUS_TERM_USER_REQUEST</constant></member>
       <member><constant>RADIUS_TERM_LOST_CARRIER</constant></member>
       <member><constant>RADIUS_TERM_LOST_SERVICE</constant></member>
       <member><constant>RADIUS_TERM_IDLE_TIMEOUT</constant></member>
       <member><constant>RADIUS_TERM_SESSION_TIMEOUT</constant></member>
       <member><constant>RADIUS_TERM_ADMIN_RESET</constant></member>
       <member><constant>RADIUS_TERM_ADMIN_REBOOT</constant></member>
       <member><constant>RADIUS_TERM_PORT_ERROR</constant></member>
       <member><constant>RADIUS_TERM_NAS_ERROR</constant></member>
       <member><constant>RADIUS_TERM_NAS_REQUEST</constant></member>
       <member><constant>RADIUS_TERM_NAS_REBOOT</constant></member>
       <member><constant>RADIUS_TERM_PORT_UNNEEDED</constant></member>
       <member><constant>RADIUS_TERM_PORT_PREEMPTED</constant></member>
       <member><constant>RADIUS_TERM_PORT_SUSPENDED</constant></member>
       <member><constant>RADIUS_TERM_SERVICE_UNAVAILABLE</constant></member>
       <member><constant>RADIUS_TERM_CALLBACK</constant></member>
       <member><constant>RADIUS_TERM_USER_ERROR</constant></member>
       <member><constant>RADIUS_TERM_HOST_REQUEST</constant></member>
      </simplelist>
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-acct-multi-session-id">
    <term>
     <constant>RADIUS_ACCT_MULTI_SESSION_ID</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Accounting multi session ID
     </para>
    </listitem>
   </varlistentry>
   <varlistentry xml:id="constant.radius-acct-link-count">
    <term>
     <constant>RADIUS_ACCT_LINK_COUNT</constant> 
     (<type>int</type>)
    </term>
    <listitem>
     <para>
      Accounting link count
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
 </section>

 <section xml:id="radius.constants.vendor-specific">
  <title>RADIUS Vendor Specific Attribute Types</title>

  <para>
   <variablelist>
    <varlistentry xml:id="constant.radius-vendor-microsoft">
     <term>
      <constant>RADIUS_VENDOR_MICROSOFT</constant> 
      (<type>int</type>)
     </term>
     <listitem>
      <para>
       Microsoft specific vendor attributes (<link xlink:href="&url.rfc;2548">RFC 2548</link>), one of:
        <simplelist>
        <member><constant>RADIUS_MICROSOFT_MS_CHAP_RESPONSE</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_CHAP_ERROR</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_CHAP_PW_1</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_CHAP_PW_2</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_RAS_VENDOR</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_CHAP_DOMAIN</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_CHAP_CHALLENGE</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_BAP_USAGE</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_MPPE_SEND_KEY</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_MPPE_RECV_KEY</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_RAS_VERSION</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_FILTER</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_CHAP2_RESPONSE</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_CHAP2_SUCCESS</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_CHAP2_PW</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER</constant></member>
        <member><constant>RADIUS_MICROSOFT_MS_ARAP_CHALLENGE</constant></member>
       </simplelist>
      </para>
     </listitem>
    </varlistentry>
   </variablelist>
  </para>
 </section>
</appendix>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
