.. Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
 
   http://www.apache.org/licenses/LICENSE-2.0
 
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.

=============
plugin.config
=============

.. configfile:: plugin.config

Description
===========

The :file:`plugin.config` file controls run-time loadable plugins
available to the Traffic Server, as well as their configuration.
Plugins listed in this file are referred to as `global plugins`
because they are always loaded and have global effect.  This is in
contrast to plugins specified in :file:`remap.config`, whose effects
are limited to the specific mapping rules they are applied to.

Each configuration line consists of a path to an ``.so`` file. This
path can either be absolute, or relative to the plugin directory
(usually ``/usr/local/libexec/trafficserver``).  Failure to load a
plugin is fatal, and will cause Traffic Server to abort. In general,
it is not possible to know whether it is safe for the service to
run without a particular plugin, since plugins can have arbitrary
effects on caching and authorization policies.

Plugins should only be listed once. The order in which the plugins
are listed is also the order in which they are chained for request
processing.

An option list of whitespace-separated arguments may follow the
plugin name. These are passed as an argument vector to the plugin's
initialization function, :c:func:`TSPluginInit`. Arguments that begin
with the ``$`` character designate Traffic Server configuration
variables. These arguments will be replaced with the value of the
corresponding configuration variable before the plugin is loaded.
When using configuration variable expansion, note that most Traffic
Server configuration can be changed. If a plugin requires the current
value, it must obtain that using the management API.

Examples
========

::

     # Comments start with a '#' and continue to the end of the line
     # Blank lines are ignored
     #
     # test-plugin.so arg1 arg2 arg3
     #
     plugins/iwx/iwx.so
     plugins/abuse/abuse.so etc/trafficserver/abuse.config
     plugins/icx/icx.so etc/trafficserver/icx.config $proxy.config.http.connect_attempts_timeout

See also
========

:manpage:`TSAPI(3ts)`,
:manpage:`TSPluginInit(3ts)`,
:manpage:`remap.config(5)`
