IPV6 related constants for netlink socket

Kristof Provost kristof at sigsegv.be
Wed Oct 31 17:08:44 EDT 2012


On 2012-10-31 15:20:58 (+0530), Murali Annamneni <a.murali at hcl.com> wrote:
> I'm trying to create a Netlink socket to configure an ipv6 interface.
> The socket call I used is -
> 
> socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE6);
> 
> I'm getting compiler error "error: NETLINK_ROUTE6 undeclared (first use in this function)"
> And I'm facing the same problem for "AF_NETLINK6".
> 
That'd be because NETLINK_ROUTE6 and AF_NETLINK6 don't actually exist.

> I grep'ed in source code of 2.6.32 kernel and system header files, I
> didn't find anywhere these constants.  Are these constants are correct
> ? If not, what are the correct one's and in which header file I can
> find them.

Take a look at rtnetlink_rcv_msg() in net/core/rtnetlink.c
One of the things it extracts from the netlink message is the family. In
other words, you need to create a plain NETLINK_ROUTE socket, and
specify the family in the message itself. You can use the same socket
for both IPv4 and IPv6.

(My comments reflect the current kernel, but they're probably also valid
for 2.6.32)

Regards,
Kristof



More information about the Kernelnewbies mailing list