You can open a netlink socket and send route update messages. There is ​​ an article​​ about how to do this.


-----------------------------------------------------------------------------------------------------------------------------------


You can also run "strace route add ..." to see how the ​​route​​ command does it.

On my system, it uses ​​ioctl​​​ with ​​SIOCADDRT​​​. A little searching turns up some ​​​ sample code​​.

Oddly, the best documentation I have found is from ​​ IBM's AS400 man pages​​.

If you just want to read the routing table, you can open and read ​​/proc/net/route​​​. (Again, ​​​strace​​​ shows that this is how the ​​route​​​ command does it.) The hex numbers are 32-bit IP addresses in machine-endian form. Try ​​​cat /proc/net/route​​.