ROUTE6D(8)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1

✨ ROUTE6D(8) ✨

okay bestie so this is route6d, from the System Manager's Manual, and it's giving networking daemon in the most iconic way πŸ’…


πŸ’– NAME πŸ’–

route6d β€” the RIP6 Routing Daemon, no cap πŸ‘‘


🚨 DEPRECATION NOTICE 🚨

bestie. listen to me. The route6d utility is deprecated and will be removed in FreeBSD 16.0. it's literally on its way out 😭 not me warning you before you build your whole setup on it πŸ™ˆ

πŸ¦‹ SYNOPSIS πŸ¦‹

route6d [-adDhlnqsS] [-R routelog] [-A prefix/preflen,if1[,if2...]]
        [-L prefix/preflen,if1[,if2...]] [-N if1[,if2...]]
        [-O prefix/preflen,if1[,if2...]] [-P number] [-p pidfile]
        [-Q number] [-T if1[,if2...]] [-t tag]

🌸 DESCRIPTION 🌸

So the route6d utility is a routing daemon that supports RIP over IPv6 β€” like, that's its whole personality πŸŽ€

Here are the options, and yes we're doing all of them, periodt:

  • -a β€” turns on aging for the statically defined routes. With this on, any statically defined routes get removed unless corresponding updates show up, just as if the routes were received at the startup of route6d. bestie they will literally expire on you πŸ’€
  • -R routelog β€” this one makes route6d log the route change (add/delete) into the file routelog. receipts, but for routes 🧾
  • -A prefix/preflen,if1[,if2...] β€” the aggregating-routes option ✨ prefix/preflen is the prefix and the prefix length of the aggregated route. When it's advertising routes, route6d filters out the specific routes that are covered by the aggregate and advertises the aggregated route prefix/preflen to the interfaces you listed in the comma-separated interface list, if1[,if2...]. and the characters *, ?, and [ in the interface list get interpreted as shell-style pattern. the route6d utility also creates a static route to prefix/preflen with the RTF_REJECT flag, straight into the kernel routing table πŸ‘‘
  • -d β€” turns on output of debugging messages. this option also tells route6d to run in foreground mode (so it does not become a daemon). lowkey my fave for watching what's happening πŸ‘€
  • -D β€” turns on extensive output of debugging messages. yes, even more. and this option also tells route6d to run in foreground mode (does not become a daemon). it's a lot. it's giving verbose πŸ’…
  • -h β€” disables the split horizon processing.
  • -l β€” so, by default route6d will not exchange site local routes, for safety reasons. why? because the semantics of site local address space are rather vague (the spec is still being worked on) and there's no good way to define the site local boundary 🫠 with the -l option, route6d will exchange site local routes as well. but it must not be used on site boundary routers, since -l assumes that all interfaces are in the same site. so like, careful πŸ’€
  • -L prefix/preflen,if1[,if2...] β€” filters incoming routes from the interfaces if1,[if2...]. the route6d utility will accept incoming routes that are in prefix/preflen. if you specify multiple -L options, any route that matches one of the options gets accepted. ::/0 is treated specially as the default route, not as "any route that has longer prefix length than, or equal to 0". if you'd like to accept any route, just specify no -L option at all. for example, with -L 2001:db8::/16,if1 -L ::/0,if1 the route6d will accept the default route and routes in the 6bone test address, but no others 🎯
  • -n β€” do not update the kernel routing table. hands off πŸ™…β€β™€οΈ
  • -N if1[,if2...] β€” do not listen to, or advertise, routes from/to the interfaces specified by if1,[if2...].
  • -O prefix/preflen,if1[,if2...] β€” restricts route advertisement toward the interfaces specified by if1,[if2...]. with this option route6d will only advertise routes that match prefix/preflen.
  • -P number β€” specifies routes to be ignored in the calculation of the expiration timer. number must be 1, 2, or 3, and it means the route flags RTF_PROTO1, RTF_PROTO2, or RTF_PROTO3 respectively. when 1 is specified, routes with RTF_PROTO1 will never expire ⏳
  • -p pidfile β€” specifies an alternative file in which to store the process ID. the default is /var/run/route6d.pid πŸ“
  • -Q number β€” specifies the flag that will be used for routes added by the RIP protocol. the default is 2 (RTF_PROTO2).
  • -q β€” puts route6d in listen-only mode. no advertisement is sent. it's giving lurker πŸ™ˆ
  • -s β€” makes route6d advertise the statically defined routes that exist in the kernel routing table when route6d is invoked. announcements obey the regular split horizon rule ✨
  • -S β€” this option is the same as -s except that no split horizon rule applies.
  • -T if1[,if2...] β€” advertise only the default route, toward if1,[if2...].
  • -t tag β€” attach the route tag tag to originated route entries. tag can be decimal, octal prefixed by 0, or hexadecimal prefixed by 0x 🏷️

omg also, upon receipt of signal SIGINT or SIGUSR1, route6d will dump the current internal state into /var/run/route6d_dump πŸ’Ύ like a lil screenshot of its soul.


πŸŽ€ FILES πŸŽ€

  • /var/run/route6d_dump β€” dumps internal state on SIGINT or SIGUSR1

🌈 SEE ALSO 🌈

G. Malkin and R. Minnear, RIPng for IPv6, RFC2080, January 1997. the ✨source material✨ iykyk


πŸ‘‘ NOTE πŸ‘‘

the route6d utility uses the IPv6 advanced API, defined in RFC2292, for communicating with peers using link-local addresses πŸ¦‹

internally, route6d embeds the interface identifier into bit 32 to 63 of link-local addresses (fe80::xx and ff02::xx) so they'll be visible on the internal state dump file (/var/run/route6d_dump) πŸ”

routing table manipulation differs from IPv6 implementation to implementation. currently route6d obeys the WIDE Hydrangea/KAME IPv6 kernel, and will not be able to run on other platforms. like, it's exclusive πŸ’…

and current route6d does not reduce the rate of the triggered updates when consecutive updates arrive β€” so yeah, it's just gonna go brrr πŸ”₯


and that's the whole page bestie!! this one came from the Debian manual set, dated May 20, 2025 β€” mwah, go touch some IPv6 routes and stay hydrated πŸ«ΆπŸ’–βœ¨

πŸ“¦ where this page comes from