We have never been able to remove an rtable; until claudio moved them
explicitly with rtable_l2set() in if_loop.c:loop_clone_destroy(), i.e.
revision 1.90
date: 2020/01/08 09:09:10; author: claudio; state: Exp; lines: +6 -2;
In loop_clone_destroy() reset the rdomain with rtable_l2set() after
the if_detach() call. In if_detach() various route messages are
generated
and during that time the rtable_l2() mapping needs to stay.
OK kn@
it would still exist but not be assigned to any valid rdomain. Back then this
could be obvserved with `route -T1 ...' still "working" after having
destroyed lo1.
Reverting claudio's commit on -CURRENT, that is with `netstat -R' now
available, confirms this:
# sysctl kern.version
kern.version=OpenBSD 6.8-beta (GENERIC) #0: Tue Sep 22 21:24:48 CEST
2020
kn@eru:/sys/arch/amd64/compile/GENERIC
# ifconfig lo1 rdomain 1
# netstat -R
Rdomain 0
Interfaces: lo0 vio0
Routing table: 0
Rdomain 1
Interface: lo1
Routing table: 1
# ifconfig lo1 destroy
# netstat -R
Rdomain 0
Interfaces: lo0 vio0
Routing table: 0
# route -T1 show
Routing tables
# echo $?
0
This is not documented anywhere and I'd certainly not expect it after
reading rtable(4). The manual says we can delete rdomains and is quiet
about deleting rtables, which can imply that rtables cannot be deleted
but might also imply that rtables are deleted automatically when
rdomains are deleted.
Either way, explicit is better here, I think.
Feedback? OK?
Index: rdomain.4
===================================================================
RCS file: /cvs/src/share/man/man4/rdomain.4,v
retrieving revision 1.14
diff -u -p -r1.14 rdomain.4
--- rdomain.4 30 Jul 2020 21:44:34 -0000 1.14
+++ rdomain.4 22 Sep 2020 19:58:57 -0000
@@ -146,3 +146,5 @@ and IPv6 support first appeared in
.Sh CAVEATS
No tool is available to assign more than one rtable to an rdomain
other than to the default one (0).
+An rtable cannot be deleted.
+Deleting an rdomain will move its rtable into the default rdomain.