.. 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.

.. include:: ../../common.defs
.. default-domain:: cpp

plugin.config
*************

.. configfile:: plugin.config

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

The :file:`plugin.config` file controls run-time loadable plugins available to
|TS|, 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 to which they are applied.

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 |TS| 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.

.. important::

   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,
:func:`TSPluginInit`. Arguments that begin with the ``$`` character designate
|TS| 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 |TS| 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)`
