Skip to contentSkip to conversation

howto setup a route by netlink socket

DISCUSSION C.J 3 participants 4 messages May 30, 2008 – May 31, 2008 PPP protocol drivers and compressors

lore
Share & tools
lore

C.J

author
#0 lore raw

Hi list,

I want to set a route by netlink socket but I've no idea how to do it clearly.

Here I've make up a virtual interface that is ppp0 by ioctl, we want to it could communicate with peer side. We need just a route, right? Netlink can do this. As there are many attributes , we need tell kernel what's our route. But I'm not sure what we should build as attributes that we will send to kernel.

Now I get a simple talk, it contains 2 attrs follow 'rtmsg' structure.
RTA_DST, 192.168.1.1 -- the peer IP
RTA_SRC, 192.168.1.2 -- our local IP
And it cannot work, kernel return [No such Device] error.
I think there are something I lost, pls help me and point out the errors.

Reg

--
c.j

#1 lore raw

You could look at the ip(8) command source to find out how it is done, /sbin/ip or /bin/ip is part of the iproute package on Red Hat and Debian based Linux distributions.

Latest version of pptp has a hack that uses system(3) to execute ip(8). If you can figure a way to do this without using system(3) then I'm quite interested.

Signature · 3 lines
James Cameron                         http://quozl.netrek.org/
HP Open Source, Volunteer             http://opensource.hp.com/
PPTP Client Project, Release Engineer http://pptpclient.sourceforge.net/
#2 lore raw
In reply to C.J
Quoted 3 lines · James Cameron

You could look at the ip(8) command source to find out how it is done, /sbin/ip or /bin/ip is part of the iproute package on Red Hat and Debian based Linux distributions.

The ip command uses libnetlink, but there's a new netlink library that is much easier to use. It's called libnl, at
http://people.suug.ch/~tgr/libnl/. It includes simple apps that do common things like add routes. Binary packages are available for modern distros.

Quoted 3 lines

Latest version of pptp has a hack that uses system(3) to execute ip(8). If you can figure a way to do this without using system(3) then I'm quite interested.

Signature · 4 lines
James Chapman
Katalix Systems Ltd
http://www.katalix.com
Catalysts for your Embedded Linux software development
author
#3 lore raw
In reply to C.J

Hi James Chapman

Quoted 6 lines
Quoted 1 line
Quoted 3 lines · James Cameron

You could look at the ip(8) command source to find out how it is done, /sbin/ip or /bin/ip is part of the iproute package on Red Hat and Debian based Linux distributions.

Quoted 9 lines

The ip command uses libnetlink, but there's a new netlink library that is much easier to use. It's called libnl, at
http://people.suug.ch/~tgr/libnl/. It includes simple apps that do common things like add routes. Binary packages are available for modern distros.

Quoted 3 lines

Latest version of pptp has a hack that uses system(3) to execute ip(8). If you can figure a way to do this without using system(3) then I'm quite interested.

Thanks a lot, I'll try.

Reg

--
c.j