NAME

routing - the LCFG routing component

DESCRIPTION

This object constructs all the necessary configuration files and starts the appropriate routing daemon.

GENERIC RESOURCES

type
defaultType
defaultDefaultType

Do we want to run quagga or routed or gated?

If we run quagga then we have the option (eventually) of speaking OSPF and BGP, as well as having some control over the RIP we accept. If we run routed then we just have to accept all RIP that's thrown at us. If we run gated then we do a bit more work, but we also get more control over what we accept. We also get to run something unsupported!

If type is null then use defaultType. If this is also null then use defaultDefaultType. If this is still null then the component gets to choose what's "best" (but note that it will then force rdisc off).

contextlabel

This resource does not actually affect the operation of the component, but instead is included in some of its messages. Setting it to some lcfg context-specific value might therefore be useful to the user.

snmp

Do we want the daemon to attempt to speak snmp? (Probably not!) This is in principle a generic resource, though only gated understands it at the moment.

ROUTED RESOURCES

routed_binary

The name of the routed binary.

QUAGGA RESOURCES

qzConfigDir

The name of the directory containing the generated quagga configuration files.

qzLocalStateDir

The name of the directory where the quagga daemons will write various state information.

qzUser
qzGroup
qzVtyUser
qzVtyGroup

The usernames and group names which will be used by the quagga daemons.

qzLog
qzLogDir

Logging mode. If qzLog is set to have things logged to files then qzLogDir contains the name of the directory where they should be written.

qzDebug
qzRipDebug

Debugging options for the daemons.

qzD
qzRipd
qzOspfd

Where are the daemon binaries?

qzUseWatchQuagga

Should the component fire up the watchquagga daemon to keep an eye on what the routing daemons are doing? If so, it will also be invoked to do a phased restart when any of the configuration files changes.

qzWatchQuagga

Where is the watchquagga daemon?

qzWqStateDir

Where is the quagga state kept? (Normally the default will be reasonable.)

qzWqLogLevel

Should a log-level be set explicitly?

qzWqMinRestart
qzWqMaxRestart

The watchquagga --min-restart-interval and --max-restart-interval parameters.

qzWqInterval

The watchquagga --interval parameter.

qzWqStart
qzWqStop
qzWqRestart

Commands to be used by watchquagga to start, stop or restart any of the daemons, respectively.

qzPass
qzConfigPass
qzRandomPasswords

Password and config password which should be written to the generated configuration files. If these are set then it will also be possible to connect to the daemons' CLIs using telnet. If qzRandomPasswords is set then random passwords will be used for any which are not explicitly set.

qzStaticRoutes

Static routes: qzStaticRoutes contains a list of static routes which should be defined. For each, there's a qzStaticDest_tag which specifies the remote network and qzStaticVia_tag which specifies the address of the local router to use for the traffic.

qzRipDefaultMetric
qzRipStaticMetric
qzRipKernelMetric
qzRipConnectedMetric
qzRipVersion
qzRipRoute

Various RIP parameters.

qzAccessLists

Access lists: qzAccessLists contains a list of which lists to define. For each, there's an qzAccessList_tag, containing the entries to go on that list. The component will create "permitAll" and "denyAll" on the fly if necessary. If qzAccessListNEM_tag is set, the access list is generated without exact-match being defined; otherwise if qzAccessListEM_tag is set then exact-match is used for all entries; otherwise by default exact-match is not set. Note that a list entry of "default" will always generate a "permit 0.0.0.0/0 exact-match". If qzAccessListNDA_tag is set, the access list won't be terminated by a "deny all"; by default it will be. If qzOffsetListIn_tag or qzOffsetListOut_tag is set, an appropriate offset-list is also generated.

qzRipDistLists
qzRipDistInAll
qzRipDistOutAll

Distribution lists: qzRipDistLists contains a list of which lists to define. For each, there's a qzRipDistIfName_tag, defaulting to tag, giving the name of the interface, qzRipDistActive_tag saying whether the interface is passive or not, qzRipDistInList_tag listing access lists to apply inbound, qzRipDistOutList_tag listing access lists to apply outbound, and qzRipDistDesc_tag specifying a helpful description for the config entry. qzRipDistInAll and qzRipDistOutAll list access lists to apply to all interfaces not otherwise set.

GATED RESOURCES

static

Specifies hosts and networks for which static routes should be installed. static contains a list of tags. For each tag there must be a corresponding gateway_tag and optional hosts_tag and/or networks_tag. The former is just a list of host IP addresses; the latter is a list of networks, with optional masks separated by ':' or mask lengths separated by '/'.

rip_import
rip_import_extra

List of networks which should be imported from RIP (with optional masks or lengths separated by ':' or '/' as before ). If this is blank then we just accept everything we're given. rip_import_extra has two functions: it makes it easy to add things to the default set, and it means these resources can each be short enough to fit even though the combined length is too much.

rip_accept_default

Should we accept the default route? Set this to null to ignore it.

rip_nobroadcast

Should we send rip packets? If this is set then we don't.

rip_ifs

Since we can only have one "interface" statement for each interface we bundle the functionality under the rip_ifs resource, which contains a list of interfaces for which metric-tweaking is required. For each there's then a corresponding rip_metricin_if and rip_metricout_if resource, which control the metric which should be set on input or added on output, and rip_ripin_if or rip_noripin_if, which control whether RIP is accepted or not and which can't both be set. Likewise rip_ripout_if and rip_noripout_if control the sending of routing information. At least one of the interface sub-resources has to be set. The usual gated rules apply here; in particular "all" is acceptable. The tag-name is assumed to be the interface name by default, but if this isn't appropriate then the rip_ifname_if resource can be used to change it. Finally, we may want to assign a non-default metric using if_metric_if when we export it as a direct route.

rip_export
rip_export_extra
rip_exportifs

There are two lots of resources involved in RIP exporting: rip_export and rip_export_extra, if set, define the defaults for all not-otherwise-specified interfaces; and rip_exportifs contains a list of interfaces for specific handling, each of which has a corresponding rip_export_whatever list. If it's required to control explicitly which directly-connected networks should be exported everywhere, this can be done by setting the appropriate rip_export_direct_whatever resources. rip_descr_whatever adds a helpful comment to the gated configuration file. rip_name_whatever sets the interface name, if it's different from the tag.

Note that it may be necessary for whatever to be "all".

rdisc_server

Should we run rdisc? Note that this'll be unconditionally forced off unless type is explicitly set to gated.

gated_binary

The name of the gated binary.

gated_pid_file

Where gated will write its pid file.

gated_config_file

Where should the generated gated.conf file go?

gated_syslog_level

At what syslog level should gated's messages be produced?

traceoptions
rip_traceoptions

Trace options, in gated-standard form. traceoptions specifies global options, while rip_traceoptions specifies RIP-specific options.

STATIC RESOURCES

static_default

The address of a router which should be set as the static default.

PRIVATE RESOURCES

The following resources should not normally have their values changed from the installation defaults. They are use either to communicate state between method invocations, or to define where the component's various compiled C helper programs have been installed, or to provide Solaris/Linux compatibility hooks. Setting them incorrectly may result in the component not functioning correctly. Refer to the component source itself for details as to their various functions.

checkInList