ok this is looking promising and more testing is required but it looks like it will do the trick with no further hacks ...
what i have done is set up zebra on a ADSL machine with the same AS as me and added plenty routes to populate the system ...
here is a look at the routing table zebra sets up ...
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote">
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
B - BGP, > - selected route, * - FIB route
K>* 0.0.0.0/0 via 66.18.87.50, ppp0
O>* 10.10.10.0/24 [110/20] via 10.10.255.122, eth0, 01:24:28
O>* 10.10.12.0/24 [110/20] via 10.10.255.122, eth0, 01:24:28
O>* 10.10.13.0/24 [110/20] via 10.10.255.122, eth0, 01:24:28
O>* 10.10.14.0/24 [110/20] via 10.10.255.122, eth0, 01:24:28
O>* 10.10.15.0/24 [110/20] via 10.10.255.122, eth0, 01:24:28
O 10.10.255.0/24 [110/10] is directly connected, eth0, 01:24:31
C>* 10.10.255.0/24 is directly connected, eth0
C>* 66.18.87.50/32 is directly connected, ppp0
C>* 127.0.0.0/8 is directly connected, lo
C>* 127.0.0.2/32 is directly connected, lo
B>* 165.165.128.1/32 [200/0] via 165.165.133.93 (recursive via 66.18.87.50), 00:06:48
B>* 192.168.0.0/24 [200/0] via 165.165.133.93 (recursive via 66.18.87.50), 00:06:48
C>* 192.168.0.23/32 is directly connected, ppp87
B>* 192.168.1.0/24 [200/0] via 192.168.0.254 (recursive via 66.18.87.50), 00:06:48
B>* 192.168.2.0/24 [200/0] via 192.168.0.254 (recursive via 66.18.87.50), 00:06:48
C>* 192.168.2.0/30 is directly connected, eth1
K>* 192.168.20.0/30 via 10.10.255.44, eth0
O>* 192.168.25.0/24 [110/20] via 10.10.255.109, eth0, 01:24:28
O>* 192.168.50.0/24 [110/20] via 10.10.255.251, eth0, 01:24:28
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
from ip route 2
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote">
165.165.128.1 via 66.18.87.50 dev ppp0 proto zebra equalize
192.168.50.0/24 via 10.10.255.251 dev eth0 proto zebra metric 20 equalize
192.168.2.0/24 via 66.18.87.50 dev ppp0 proto zebra equalize
192.168.1.0/24 via 66.18.87.50 dev ppp0 proto zebra equalize
192.168.0.0/24 via 66.18.87.50 dev ppp0 proto zebra equalize
10.10.14.0/24 via 10.10.255.122 dev eth0 proto zebra metric 20 equalize
10.10.15.0/24 via 10.10.255.122 dev eth0 proto zebra metric 20 equalize
10.10.12.0/24 via 10.10.255.122 dev eth0 proto zebra metric 20 equalize
10.10.13.0/24 via 10.10.255.122 dev eth0 proto zebra metric 20 equalize
10.10.10.0/24 via 10.10.255.122 dev eth0 proto zebra metric 20 equalize
192.168.25.0/24 via 10.10.255.109 dev eth0 proto zebra metric 20 equalize
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
here is the routing table on the remote PC (zebra)
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote">
K>* 0.0.0.0/0 via 165.165.128.1, ppp0
B>* 10.10.10.0/24 [200/20] via 10.10.255.122 (recursive via 165.165.128.1), 00:03:58
B>* 10.10.12.0/24 [200/20] via 10.10.255.122 (recursive via 165.165.128.1), 00:03:58
B>* 10.10.13.0/24 [200/20] via 10.10.255.122 (recursive via 165.165.128.1), 00:03:58
B>* 10.10.14.0/24 [200/20] via 10.10.255.122 (recursive via 165.165.128.1), 00:03:58
B>* 10.10.15.0/24 [200/20] via 10.10.255.122 (recursive via 165.165.128.1), 00:03:58
B>* 10.10.255.0/24 [200/0] via 66.18.86.82 (recursive via 165.165.128.1), 00:03:58
B>* 66.18.87.50/32 [200/0] via 66.18.86.82 (recursive via 165.165.128.1), 00:03:58
C>* 127.0.0.0/8 is directly connected, lo
C>* 127.0.0.2/32 is directly connected, lo
C>* 165.165.128.1/32 is directly connected, ppp0
O 192.168.0.0/24 [110/10] is directly connected, eth0, 00:08:41
C>* 192.168.0.0/24 is directly connected, eth0
B>* 192.168.0.23/32 [200/0] via 66.18.86.82 (recursive via 165.165.128.1), 00:03:58
K>* 192.168.1.0/24 via 192.168.0.254, eth0
K>* 192.168.2.0/24 via 192.168.0.254, eth0
B>* 192.168.2.0/30 [200/0] via 66.18.86.82 (recursive via 165.165.128.1), 00:03:58
B>* 192.168.20.0/30 [200/0] via 10.10.255.44 (recursive via 165.165.128.1), 00:03:58
B>* 192.168.25.0/24 [200/20] via 10.10.255.109 (recursive via 165.165.128.1), 00:03:58
B>* 192.168.50.0/24 [200/20] via 10.10.255.251 (recursive via 165.165.128.1), 00:03:58
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
now i am guessing that to get it down any other link we will need to simply route the BGP server down that link in the kernel routing table and all trafic will go down that link when zebra inserts its routes it will set the device to go down ...
this is much easier than i thought ... ....