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


##
## Container section - Configures the general operation of the AMQP container.
##
container {
    ##
    ## worker-threads - The number of threads that will be created to
    ## process message traffic and other application work (timers, non-amqp
    ## file descriptors, etc.)
    ##
    ## The number of threads should be related to the number of available
    ## processor cores.  To fully utilize a quad-core system, set the
    ## number of threads to 4.
    ##
    worker-threads: 4

    ##
    ## container-name - The name of the AMQP container.  If not specified,
    ## the container name will be set to a value of the container's
    ## choosing.  The automatically assigned container name is not
    ## guaranteed to be persistent across restarts of the container.
    ##
    container-name: Qpid.Dispatch.Router.A
}


##
## SSL Profile section - Zero or more SSL profiles may be defined here and
## then referenced later in listeners (for incoming connections) or
## connectors (for outgoing connectors).
##
ssl-profile {
    ##
    ## name - The name of the profile to be referenced later.
    ##
    name: ssl-profile-name

    ##
    ## cert-db - The path to the database that contains the public
    ## certificates of trusted certificate authorities (CAs).
    ##
    ## cert-db: /path/to/trusted-ca.db

    ##
    ## cert-file - The path to the file containing the PEM-formatted public
    ## certificate to be used on the local end of any connections using
    ## this profile.
    ##
    ## cert-file: /path/to/cert-file.pem

    ##
    ## key-file - The path to the file containing the PEM-formatted private
    ## key for the above certificate.
    ##
    ## key-file: /path/to/private-key-file.pem

    ##
    ## password-file - If the above private key is password protected, this
    ## is the path to a file containing the password that unlocks the
    ## certificate key.
    ##
    ## password-file: /path/to/password-file

    ##
    ## password - An alternative to storing the password in a file
    ## referenced by password-file is to supply the password right here in
    ## the configuration file.  This option can be used by supplying the
    ## password in the 'password' option.  Don't use both password and
    ## password-file in the same profile.
    ##
    ## password: <password>
}


##
## Listeners and Connectors
##
listener {
    addr: 0.0.0.0
    port: amqp
    sasl-mechanisms: ANONYMOUS
}

listener {
    label: Router Interconnect Access
    addr: 0.0.0.0
    port: 5671
    sasl-mechanisms: EXTERNAL
    ssl-profile: ssl-profile-name
    require-peer-auth: yes
    allow-unsecured: yes
}

connector {
    label: Router Uplink
    addr: backbone.enterprise.com
    port: amqps
    sasl-mechanisms: EXTERNAL
    ssl-profile: ssl-profile-name
    allow-redirect: no
}


##
## Router section - Configure the AMQP router function.
##
router {
    ##
    ## area and router-id - Each router is assigned an area name and a
    ## router-id that is unique within the area.
    ##
    area: all
    router-id: Router.A

    ##
    ## hello-interval - The interval, in seconds, between HELLO messages
    ## sent between connected routers.  This interval can be relatively
    ## fast because HELLO messages do not propagate beyond one hop on the
    ## network.  A good value is 1 second.
    ##
    hello-interval: 1

    ##
    ## hello-max-age - The maximum time, in seconds, that can elapse
    ## without receiving a HELLO message from a neighbor before that
    ## neighbor is declared absent.  A good value is 3 seconds.
    ##
    hello-max-age: 3

    ##
    ## ra-interval - The interval, in seconds, between RA (Router
    ## Advertisement) messages sent by this router.  This interval should
    ## be considerably longer than the hello interval because RA messages
    ## propagate across the area.  A good value is 30 seconds.
    ##
    ra-interval: 30

    ##
    ## remote-ls-max-age - The maximum age, in seconds, of a remote
    ## link-state record.  Any such records that are not updated and time
    ## out shall be removed from the set and the topology shall be
    ## recomputed.  A good value is 60 seconds.
    ##
    remote-ls-max-age: 60

    ##
    ## mobile-addr-max-age - The maximum age, in seconds, of a remote
    ## mobile address record.  Any record that exceeds this age shall be
    ## removed from the routing table.  A good value is 60 seconds.
    ##
    mobile-addr-max-age: 60
}


