# OLSR.org routing daemon config file
# This file contains ALL available options and explanations about them
#
# Lines starting with a # are discarded
#

#### ATTENTION for IPv6 users ####
# Because of limitations in the parser IPv6 addresses must NOT
# begin with a ":", so please add a "0" as a prefix.

###########################
### Basic configuration ###
###########################
# keep this settings at the beginning of your first configuration file

# Debug level (0-9)
# If set to 0 the daemon runs in the background, unless "NoFork" is set to true
# (default is 1)

# DebugLevel  1

# IP version to use (4 or 6)
# (default is 4)

# IpVersion 4

#################################
### OLSRd agent configuration ###
#################################
# this parameters control the settings of the routing agent which are not
# related to the OLSR protocol and it's extensions

# Clear the screen each time the internal state changes
# (default is yes)

# ClearScreen     yes

# Should olsrd keep on running even if there are
# no interfaces available? This is a good idea
# for a PCMCIA/USB hotswap environment.
# (default is yes)

# AllowNoInt  yes

# LockFile
# The lockfile is used to prevent multiple OLSR instances running at the same
# time.
# (Linux/BSD default is "/var/run/olsrd-ipv(4/6).lock")
# (Win32     default is "[configfile]-ipv(4/6).lock")

# LockFile "/var/run/olsrd-ipv4.lock"

# Polling rate for OLSR sockets in seconds (float).
# (default is 0.05)

# Pollrate  0.05

# Interval to poll network interfaces for configuration changes (in seconds).
# Linux systems can detect interface statechange via netlink sockets.
# (default is 2.5)

# NicChgsPollInt  2.5

# TOS(type of service) value for the IP header of control traffic.
# (default is 192)

# TosValue 192

# FIBMetric controls the metric value of the host-routes OLSRd sets.
# - "flat" means that the metric value is always 2 (or as configured
#   with FIBMetricDefault). This is the preferred value because it helps
#   the linux kernel routing to clean up older routes
# - "correct" use the hopcount as the metric value.
# - "approx" use the hopcount as the metric value too, but does only update the
#   hopcount if the nexthop changes too
# (default is "flat")

# FIBMetric "flat"

# Default FIB metric.
# The kernel FIB does not need to know the metric of a route.
# This saves us from enqueuing/dequeueing hopcount only changes.
# (default is 2)

# FIBMetricDefault 2

#######################################
### Linux specific OLSRd extensions ###
#######################################
# these parameters are only working on linux at the moment, but might become
# useful on BSD in the future

# SrcIpRoutes tells OLSRd to set the Src flag of host routes to the originator-ip
# of the node. In addition to this an additional localhost device is created
# to make sure the returning traffic can be received.
# (default is "no")

# SrcIpRoutes no

# Specify the proto tag to be used for routes olsr inserts into kernel
# currently only implemented for linux
# valid values under linux are 1 .. 254
# 1 gets remapped by olsrd to 0 UNSPECIFIED (1 is reserved for ICMP redirects)
# 2 KERNEL routes (not very wise to use)
# 3 BOOT (should in fact not be used by routing daemons)
# 4 STATIC
# 8 .. 15 various routing daemons (gated, zebra, bird, & co)
# (default is 0 which gets replaced by an OS-specific default value;
# 3 (BOOT) under linux (for backward compatibility)

# RtProto 0

# Specifies the routing Table olsr uses
# RtTable is for host routes, RtTableDefault for the route to the default
# internet gateway (2 in case of IPv6+NIIT) and RtTableTunnel is for
# routes to the ipip tunnels, valid values are 1 to 254
# There is a special parameter "auto" (choose default below)
# (with    smartgw: default is 254/223/224)
# (without smartgw: default is 254/254/254, linux main table)

# RtTable        auto
# RtTableDefault auto
# RtTableTunnel  auto

# Specifies the policy rule priorities for the three routing tables and
# a special rule for smartgateway routing (see README-Olsr-Extensions)
# Priorities can only be set if three different routing tables are set.
# if set the values must obey to condition
# RtTablePriority less than RtTableDefaultOlsrPriority
# less than RtTableTunnelPriority less than RtTableDefaultPriority
# There are two special parameters, "auto" (choose fitting to SmartGW
# mode) and "none" (do not set policy rule)
# (with    smartgw: default is  none/32776/32786/32796)
# (without smartgw: default is  auto/auto /auto /auto )

# RtTablePriority            auto
# RtTableDefaultOlsrPriority auto
# RtTableTunnelPriority      auto
# RtTableDefaultPriority     auto

# Activates (in IPv6 mode) the automatic use of NIIT
# (see README-Olsr-Extensions)
# (default is "no" in IPv4 mode, "yes" in IPv6 mode)

# UseNiit no

# Activates the smartgateway ipip tunnel feature.
# See README-Olsr-Extensions for a description of smartgateways.
# (default is "no")

# SmartGateway no

# Signals that the server tunnel must always be removed on shutdown,
# irrespective of the interface up/down state during startup.
# (default is "no")

# SmartGatewayAlwaysRemoveServerTunnel no

# Determines the maximum number of gateways that can be in use at any given
# time. This setting is used to mitigate the effects of breaking connections
# (due to the selection of a new gateway) on a dynamic network.
# (default is 1)

# SmartGatewayUseCount 1

# Determines the take-down percentage for a non-current smart gateway tunnel.
# If the cost of the current smart gateway tunnel is less than this percentage
# of the cost of the non-current smart gateway tunnel, then the non-current smart
# gateway tunnel is taken down because it is then presumed to be 'too expensive'.
# This setting is only relevant when SmartGatewayUseCount is larger than 1;
# a value of 0 will result in the tunnels not being taken down proactively.
# (default is 25)

# SmartGatewayTakeDownPercentage 25

# Determines the olsrd instance id, which is needed for proper cleanup
# of multi-gateway iptables and ip rules when running multiple olsrd
# instances on a node. This setting MUST be configured when the
# multi-gateway mode is enabled and must be unique between the olsrd
# instances running on the node. It may not contain whitespace and may
# not be empty.
# (default is <not set>)

# SmartGatewayInstanceId <not set>

# Determines the policy routing script that is executed during startup and
# shutdown of olsrd. The script is only executed when SmartGatewayUseCount
# is set to a value larger than 1. The script must setup policy routing
# rules such that multi-gateway mode works. A sample script is included.
# (default is <not set>)

# SmartGatewayPolicyRoutingScript <not set>

# Determines the egress interfaces that are part of the multi-gateway setup and
# therefore only relevant when SmartGatewayUseCount is larger than 1 (in which
# case it must be explicitly set).
# (default is not set)

# SmartGatewayEgressInterfaces ""

# SmartGatewayEgressFile declares the file that contains the bandwidth
# parameters of the egress interfaces declared by SmartGatewayEgressInterfaces.
# Every line in the file declares bandwidth parameters of an egress interface,
# with the format:
#   # this is a comment
#   interface=upstream,downstream,pathcost,network/prefix,gateway
# Only the upstream and downstream fields are mandatory, the other fields are
# optional. An empty field signifies that its default should be used.
# The field defaults are:
#   upstream           = 0 (Kbps)
#   downstream         = 0 (Kbps)
#   pathcost           = 0 (dimensionless, 1024 is equivalent to 1 hop)
#   network/prefix     = no default / not set
#                        - network is an IP address
#                        - prefix is a number in the range [0, 24] for IPv4
#                          and in the range [0, 128] for IPv6
#   gateway            = no default / not set (IP address)
# (default is /var/run/olsrd-sgw-egress.conf)

# SmartGatewayEgressFile "/var/run/olsrd-sgw-egress.conf"

# Determines the period (in milliseconds) on which the SmartGatewayEgressFile
# is checked for changes and processed if changed.
# (default is 5000)

# SmartGatewayEgressFilePeriod 5000

# Declares the file that is written by olsrd to contain the status of the smart
# gateways and is only relevant when SmartGatewayUseCount is larger than 1.
# (default is <not set>)

# SmartGatewayStatusFile <not set>

# Determines the routing tables offset for multi-gateway policy routing tables
# See the policy routing script for an explanation.
# (default is 90)

# SmartGatewayTablesOffset 90

# Determines the policy routing rules offset for multi-gateway policy routing
# rules. See the policy routing script for an explanation.
# (default is 0, which indicates that the rules and tables should be aligned and
# puts this value at SmartGatewayTablesOffset - # egress interfaces -
# # olsr interfaces)

# SmartGatewayRulesOffset 0

# Allows the selection of a smartgateway with NAT (only for IPv4)
# (default is "yes")

# SmartGatewayAllowNAT yes

# Determines the period (in milliseconds) on which a new smart gateway
# selection is performed.
# (default is 10000 milliseconds)

# SmartGatewayPeriod 10000

# Determines the number of times the link state database must be stable
# before a new smart gateway is selected.
# (default is 6)

# SmartGatewayStableCount 6

# When another gateway than the current one has a cost of less than the cost
# of the current gateway multiplied by SmartGatewayThreshold then the smart
# gateway is switched to the other gateway. The unit is percentage.
# (default is 0)

# SmartGatewayThreshold 0

# The weighing factor for the gateway uplink bandwidth (exit link, uplink).
# See README-Olsr-Extensions for a description of smart gateways.
# (default is 1)

# SmartGatewayWeightExitLinkUp 1

# The weighing factor for the gateway downlink bandwidth (exit link, downlink).
# See README-Olsr-Extensions for a description of smart gateways.
# (default is 1)

# SmartGatewayWeightExitLinkDown 1

# The weighing factor for the ETX costs.
# See README-Olsr-Extensions for a description of smart gateways.
# (default is 1)

# SmartGatewayWeightEtx 1

# The divider for the ETX costs.
# See README-Olsr-Extensions for a description of smart gateways.
# (default is 0)

# SmartGatewayDividerEtx 0

# When a node advertises the maximum bandwidth and its ETX
# is below the value of this setting then the resulting gateway
# costs are equal to the ETX, otherwise the normal calculation
# of the gateway costs applies.
# (default is 2560)

# SmartGatewayMaxCostMaxEtx 2560

# Defines what kind of Uplink this node will publish as a
# smartgateway. The existence of the uplink is detected by
# a route to 0.0.0.0/0, ::ffff:0:0/96 and/or 2000::/3.
# possible values are "none", "ipv4", "ipv6", "both"
# (default is "both")

# SmartGatewayUplink "both"

# Specifies if the local ipv4 uplink use NAT
# (default is "yes")

# SmartGatewayUplinkNAT yes

# Specifies the speed of the uplink in kilobit/s.
# First parameter is upstream, second parameter is downstream
# (default is 128/1024)

# SmartGatewaySpeed 128 1024

# Specifies the EXTERNAL ipv6 prefix of the uplink. A prefix
# length of more than 64 is not allowed.
# Only relevant when running in IPv6 mode.
# (default is 0::/0)

# SmartGatewayPrefix ::/0

##############################
### OLSR protocol settings ###
##############################

# For testing purposes it may be nice to use another port for olsrd
# for using another port than the IANA assigned one
# for a production network, there should be a good reason!!
# valid values are integers greater than 1, please be careful with
# using reserved port numbers
# (default is 698, the IANA assigned olsr-port)

# OlsrPort 698

# Sets the main IP (originator ip) of the router. This IP will NEVER
# change during the uptime of olsrd.
# (default is 0.0.0.0, which triggers usage of the IP of the first interface)

MainIp 10.0.0.1

# The fixed willingness to use (0-7)
# If not set willingness will be calculated
# dynamically based on battery/power status
# (default is 3)

# Willingness     3

# HNA (Host network association) allows the OLSR to announce
# additional IPs or IP subnets to the net that are reachable
# through this node.
# Syntax for HNA4 is "network-address    network-mask"
# Syntax for HNA6 is "network-address    prefix-length"
# (default is no HNA)
Hna4
{
# Internet gateway
# 0.0.0.0   0.0.0.0
# specific small networks reachable through this node
# 15.15.0.0 255.255.255.0
}
Hna6
{
# Internet gateway
#   0::                     0
# specific small networks reachable through this node
#   fec0:2200:106:0:0:0:0:0 48
}

# Hysteresis for link sensing (only for hopcount metric)
# Hysteresis adds more robustness to the link sensing
# but delays neighbor registration.
# (default is no)

# UseHysteresis no

# Hysteresis parameters (only for hopcount metric)
# Do not alter these unless you know what you are doing!
# Set to auto by default. Allowed values are floating point
# values in the interval 0,1
# THR_LOW must always be lower than THR_HIGH!!
# (default is 0.50/0.80/0.30)

# HystScaling  0.50
# HystThrHigh  0.80
# HystThrLow   0.30

# TC redundancy
# Specifies how much neighbor info should be sent in
# TC messages. Because of a design problem in the 0.5.x
# dijkstra implementation this value must be set to 2.
# 2 - send all neighbors
# (default is 2)

# TcRedundancy  2

# MPR coverage specifies how many MPRs a node should
# try select to reach every 2 hop neighbor. Because of
# a design problem in the 0.5.x dijkstra algorithm this
# value should be set to 7.
# (default is 7)

# MprCoverage 7

################################
### OLSR protocol extensions ###
################################

# Link quality level switch between hopcount and
# cost-based (mostly ETX) routing. Because of
# a design problem in the 0.5.x dijkstra algorithm this
# value should not be set to 1.
# 0 = do not use link quality
# 2 = use link quality for MPR selection and routing
# (default is 2)

# LinkQualityLevel 2

# Link quality algorithm (only for lq level 2)
# (see README-Olsr-Extensions)
# - "etx_float", a floating point  ETX with exponential aging
# - "etx_fpm", same as ext_float, but with integer arithmetic
# - "etx_ff" (ETX freifunk), an etx variant which use all OLSR
#   traffic (instead of only hellos) for ETX calculation
# - "etx_ffeth", an incompatible variant of etx_ff that allows
#   ethernet links with ETX 0.1.
# (default is "etx_ff")

# LinkQualityAlgorithm    "etx_ff"

# Link quality aging factor (only for lq level 2)
# Tuning parameter for etx_float and etx_fpm, smaller values
# mean slower changes of ETX value. (allowed values are
# between 0.01 and 1.0)
# (default is 0.05)

# LinkQualityAging 0.05

# Fisheye mechanism for TCs (0 meansoff, 1 means on)
# (default is 1)

# LinkQualityFishEye  1

#
# NatThreshold
#
# (currently this is only in the freifunk firmware)
# If the NAT-Endpoint (the preferred 0/0 HNA emitting node)
# is to be changed, the ETX value of the current 0/0 is
# multiplied with the NatThreshold value before being
# compared to the new one.
# The parameter can be a value between 0.1 and 1.0, but
# should be close to 1.0 if changed.
# WARNING: This parameter should not be used together with
# the etx_ffeth metric !!
# (default is 1.0)

# NatThreshold  1.0

#############################################################
### Configuration of the IPC to the windows GUI interface ###
#############################################################

IpcConnect
{
     # Determines how many simultaneously
     # IPC connections that will be allowed
     # Setting this to 0 disables IPC

     # MaxConnections  0

     # By default only 127.0.0.1 is allowed
     # to connect. Here allowed hosts and networks can
     # be added

     # Host            127.0.0.1
     # Host            10.0.0.5
     # Net             192.168.1.0 255.255.255.0
}

#####################################
### Example plugin configurations ###
#####################################
# Olsrd plugins to load
# This must be the absolute path to the file
# or the loader will use the following scheme:
# - Try the paths in the LD_LIBRARY_PATH
#   environment variable.
# - The list of libraries cached in /etc/ld.so.cache
# - /lib, followed by /usr/lib
#

# Check whether a plugin is available for your operating system.
# Each plugin should have a README file in it's lib subfolder.

LoadPlugin "olsrd_jsoninfo.so.1.1" {
}

#############################################
### OLSRD default interface configuration ###
#############################################
# the default interface section can have the same values as the following
# interface configuration. It will allow you so set common options for all
# interfaces.

InterfaceDefaults
{
}

######################################
### OLSRd Interfaces configuration ###
######################################
# Multiple interfaces can be specified for a single configuration block, format:
#   Interface "<OLSRd-Interface1>" "<OLSRd-Interface2>"
#
# Multiple configuration blocks can be specified.

Interface "wlan0"
{
    # Interface Mode is used to prevent unnecessary
    # packet forwarding on switched ethernet interfaces
    # valid Modes are "mesh" and "ether"
    # (default is "mesh")

    # Mode "mesh"

    # IPv4 broadcast address for outgoing OLSR packets.
    # One useful example would be 255.255.255.255
    # The second useful value would be to
    # specify the peer address of an ptp-tunnel.
    # another name of this parameter is "IPv4Multicast"
    # (default is 0.0.0.0, which triggers the usage of the
    # interface broadcast IP)

    # Ip4Broadcast      0.0.0.0

    # IPv6 multicast address
    # (default is ff02::6d, the manet-router linklocal multicast)

    # IPv6Multicast ff02::6d

    # IPv4 src address for outgoing OLSR packages
    # (default is 0.0.0.0, which triggers usage of the interface IP)

    # IPv4Src 0.0.0.0

    # IPv6 src prefix. OLSRd will choose one of the interface IPs
    # which matches the prefix of this parameter.
    # (default is 0::/0, which triggers the usage
    # of a not-linklocal interface IP)

    # IPv6Src ::/0

    # Emission intervals in seconds.
    # If not defined, Freifunk network defaults are used.
    # (defaults: Hello = 2.0/20.0,  TC  = 5.0/300.0,
    #            MID   = 5.0/300.0, HNA = 5.0/300.0)

    # HelloInterval       2.0
    # HelloValidityTime   20.0
    # TcInterval          5.0
    # TcValidityTime      300.0
    # MidInterval         5.0
    # MidValidityTime     300.0
    # HnaInterval         5.0
    # HnaValidityTime     300.0

    # When multiple links exist between hosts
    # the weight of interface is used to determine
    # the link to use. Normally the weight is
    # automatically calculated by olsrd based
    # on the characteristics of the interface,
    # but here you can specify a fixed value.
    # Olsrd will choose links with the lowest value.
    # Note:
    # Interface weight is used only when LinkQualityLevel is set to 0.
    # For any other value of LinkQualityLevel, the interface ETX
    # value is used instead.
    # Weight 0

    # If a certain route should be preferred
    # or ignored by the mesh, the Link Quality
    # value of a node can be multiplied with a factor
    # entered here. In the example the route
    # using 192.168.0.1 would rather be ignored.
    # A multiplier of 0.5 will result in a small
    # (bad) LinkQuality value and a high (bad)
    # ETX value.
    # Note:
    # Link quality multiplier is used only when
    # LinkQualityLevel is greater than 0.

    # example 1: reduce LQ to 192.168.0.1 by half
    # LinkQualityMult 192.168.0.1 0.5

    # example 2: reduce LQ to all nodes on this interface by 20%
    # LinkQualityMult default 0.8
}

# END AUTOGENERATED CONFIG
