I am writing a daemon running on an embedded platform that needs to change the default route of the device according to which interface it is connecting on at a given time. How can I do this programatically? I know I can use system("route del default && route add default gateway blah"); etc but is there a more direct way?
UPDATE: I solved my particular problem by discovering a patch to pppd that allows a replacedefaultroute option. The patch also includes code for programmatically modifying the routing table. It is included in this gentoo bug report http://bugs.gentoo.org/227321
Check out SIOCADDRT/SIOCDELRT ioctls (Stevens' "Unix Network Programming" would be a good reference.)
I typed
man route
cause I know sometimes I can get a hint in the "see also" section for how to do the same thing programatically. I saw there was a man page on page 4 for "route" (route(4) was in the see also section). So tried
man 4 route
and it looked promising for doing what the route command can do programmitically.
Note I just noticed this is only for BSD systems. Here is a URL with the manpage http://www.manpagez.com/man/4/route/. This may or may not be helpful. Maybe you can google some of the stuff in here and add the word "linux".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With