Ok I've located the culprit logic. It's in NetworkManagerSystem.c - the logic first removes all routes attached to the new VPN interface, and then proceeds to force-feed what it believes to be the correct routing configurations. I think what's appropriate here is the addition of a flag in the DBUS messages which indicates the behavior to be followed. If the flag is missing, the default (i.e. current) behavior is followed - otherwise we can respect routing as implemented by the VPN backend (desired), or some combination of the two.
I'll get cracking on this and see if I can come up with a small, simple patch for the problem.
Please note: for now, I'm working only on 8.04 (NM 0.6.6). After that, I'll have a look at newer versions and see if the patch would need work.
Ok I've located the culprit logic. It's in NetworkManagerS ystem.c - the logic first removes all routes attached to the new VPN interface, and then proceeds to force-feed what it believes to be the correct routing configurations. I think what's appropriate here is the addition of a flag in the DBUS messages which indicates the behavior to be followed. If the flag is missing, the default (i.e. current) behavior is followed - otherwise we can respect routing as implemented by the VPN backend (desired), or some combination of the two.
I'll get cracking on this and see if I can come up with a small, simple patch for the problem.
Please note: for now, I'm working only on 8.04 (NM 0.6.6). After that, I'll have a look at newer versions and see if the patch would need work.
Cheers.