Subject: Re: PR-7148 (causes kernel panic)
To: Manuel Bouyer <bouyer@antioche.lip6.fr>
From: Christos Zoulas <christos@zoulas.com>
List: tech-net
Date: 10/29/1999 17:45:18
On Oct 29, 10:32pm, bouyer@antioche.lip6.fr (Manuel Bouyer) wrote:
-- Subject: Re: PR-7148 (causes kernel panic)

| On Thu, Oct 28, 1999 at 09:38:37PM +0000, Christos Zoulas wrote:
| > sysctl and the routing socket are exported interfaces. You need to version
| > them.
| 
| For sysctl this has not always been respected then ...
| At last when I removed kern.shortcorename I didn't keep it under COMPAT_14.
| Shoud I have ?
| Or does your comment only apply to "complex" sysctl data ?

I think that it depends on the criticality of the feature and the number
of native/3rd party programs that use it.

| > 
| > The sysctl one is easy: NET_RT_IFLIST becomes NET_RT_OIFLIST, and
| > we define a new number of NET_RT_IFLIST. Then using struct if_msghdr15
| > (the old if_msghdr) implement NET_RT_OIFLIST, if COMPAT_15 is defined.
| 
| Sure, it's easy (I guess you mean COMPAT_14 here :).

Yeah, typo. That is why I said this one is easy.

| > 
| > The routing socket one is RTM_IFINFO -> RTM_OLDIFINFO etc...
| 
| The problem with the routing socket is: RTM_IFINFO messages are only send
| on the kernel initiative (when and iface goes up or down). What can we do
| here ? Send both messages, the processes will pick the rigth one ?

It appears that routed will DTRT if you send both messages, but it
will log that it is out of sync.  I don't know about gated (that
is why I said that this is going to be harder. Anyway, since this
is only compat code, I guess it is not going to be a huge deal.

There is a proper way to fix the code, which is to change the routing
socket api version from 3 -> 4, but that is a much more involved change
and I am not sure it is worth it.

| I've already started the change, I should have diffs for the sysctl stuff
| ready soon. The routing socket is less clear.
| 
| For the record I'm running a kernel with a changed if_data and old userland
| without troubles (just netstat -i reports wrong stats), tested with ethernet
| and ppp. Maybe stuffs like routed or gated would have problem but I don't
| use theses :)
| 

Cool. As I mentioned, I don't know about gated, but it appears that routed
will work. Thanks for trying to fix this!

christos