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.

Reply via email to