The current version of smcroute can be downloaded from



SMCRoute - Static Multicast Router (-Interface) - Version 0.94.1  


smcroute < options > < commands >
-d - start daemon
-v - verbose output
-D - enable debug logging
commands - common
-h - print help
-k - kill daemon
commands - multicast routing related
-a <InputIntf> <OriginIpAdr> <McGroupAdr> <OutputIntf> [<OutputIntf>] ...    -  add route
-r <InputIntf> <OriginIpAdr> <McGroupAdr>   -  remove route
commands - multicast signaling related
-j <InputIntf> <McGroupAdr> - join MC group
-l <InputIntf> <McGroupAdr> - leave MC group


SMCRoute is a command line tool to manipulate the multicast routes of the Linux kernel. It supports both IPv4 and IPv6 multicast routing. SMCRoute can be used as an alternative to dynamic multicast routers like 'mrouted' in situations where static multicast routes should be maintained and/or no proper IGMP or MLD signaling exists.

Generally multicast routes exists in the kernel only as long as smcroute or another multicast routing daemon is running. Only one multicast routing daemon can be active at a time, so it's impossible to run smcroute and e.g. 'mrouted' at the same time.

The -d option smcroute is used to start the smcroute daemon. Otherwise, smcroute searches for an already running smcroute daemon and passes the commands to it. The -k option will terminate a running daemon.

Multicast routes can be added with the -a command and removed with the -r command.

A multicast route is defined by an input interface (<IntputIntf>), a unicast IP origin address (<OriginIpAdr>), a multicast group (<McGroupAdr>) and a list of output interfaces (<OutputIntf> ...).

The origin and multicast group addresses must both be IPv4 addresses or IPv6 addresses. If IPv4 addresses are specified then SMCRoute will operate on the IPv4 multicast routes. If IPv6 addresses are specified then SMCRoute will operate on the IPv6 multicast routes. The output interfaces must not be given with the -r as the first three parameter are sufficient to identify the route to remove.

The intention of SMCRoute is to help in situation where dynamic multicast routing does not work properly, but dynamic multicast routing is in nearly all cases the preferred solution. SMCRoute supports dynamic multicast routing with the multicast group 'join' -j and 'leave' -l commands. For both commands the input interface on which the multicast sessions should be received (<InputIntf>) and the multicast group address <McGroupAdr> must be given. The <McGroupAdr> may be an IPv4 or IPv6 address.

Superuser rights are necessary to start the smcroute daemon or to communicate with the daemon.  


Starts the smcroute daemon before any of the optional following commands are executed.

Gives verbose output in some error situations (don't expect too much, check syslog instead).

Gives additional debug messages in normal use (don't expect too much, see syslog instead).


<InputIntf> <OriginIpAdr> <McGroupAdr> <OutputIntf> [<OutputIntf>] ...

The command is passed to the daemon that adds the given multicast route to the kernel's routing table. <InputIntf> can be any network interface as listed by 'ifconfig' or 'ip link list' (incl. tunnel interfaces), but not the loopback interface. <OriginIpAdr> is the source IP address of the multicast packets that will be routed by this entry. It is a unicast IPv4 or IPv6 address and not a multicast IP address. <McGroupAdr> is the IPv4 or IPv6 address of the multicast group that will be forwarded. <OutputIntf> [<OutputIntf>] ... is a list of one or more network interfaces to which the multicast packets will be forwarded. The same rules for the selection of output interfaces applies as for the input interface.

Warning, by using multiple output interfaces (traffic multiplication), using the input interface also as output interface (direct loop) or constructing some other forms of indirect loop you can flood you network.

<InputIntf> <OriginIpAdr> <McGroupAdr>

The command is passed to the daemon that removes a multicast route previously added with the -a command. The parameters are identical except to the omitted list of <OutputIntf>.

<InputIntf> <McGroupAdr>

The command is passed to the daemon that passes it to the kernel. The kernel then tries to join the multicast group <McGroupAdr> on interface <InputIntf> by starting IGMP (or MLD if <McGroupAdr> is an IPv6 address) signaling on <InputIntf>. This signaling may be received by routers connected to <InputIntf>'s network that support IGMP/MLD multicast signaling and then hopfuly start forwarding of the requested multicast session to <InputIntf>'s network.

With this command smcroute allows the integration of nodes that needs static multicast routing into dynamic multicast routing networks.

<InputIntf> <McGroupAdr>

The command is passed via the daemon to the kernel that initiate a 'leave' for a previously 'joined' multicast group.



The current version compiles and runs fine with the Linux kernel version 2.4. The known limits are:

Multicast routes: more then 200

Multicast group membership: max. 20  


- contains the active IPv4 multicast routes
- contains the IPv4 'virtual' interfaces used by the active multicast routing daemon
- contains the active IPv6 multicast routes
- contains the IPv6 'virtual' interfaces used by the active multicast routing daemon
- IPC socket created by the smcroute daemon




The English wording of this man page.  


smcroute was originally written by Carsten Schill <>, support for IPv6 was added by Todd Hayton <>.

The source code is now maintained by Todd Hayton <>, Micha Lenk <> and Julien BLACHE <>.

The current version is available at:  


A lot of extra information is sent under the daemon facility and the debug priority to the syslog daemon.

This document was created by man2html, using the manual pages.
Time: 12:00:27 GMT, February 23, 2010