Differences between version 5 and previous revision of LinuxNetlinkSocketExample.
Other diffs: Previous Major Revision, Previous Author, or view the Annotated Edit History
Newer page: | version 5 | Last edited on Thursday, September 22, 2005 2:35:44 am | by CamiloMesias | Revert |
Older page: | version 4 | Last edited on Wednesday, September 21, 2005 12:44:58 am | by CamiloMesias | Revert |
@@ -17,10 +17,13 @@
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
#if 0
-#define MYPROTO NETLINK_ARPD
+//
#define MYPROTO NETLINK_ARPD
#define MYMGRP RTMGRP_NEIGH
+// if you want the above you'll find that the kernel must be compiled with CONFIG_ARPD, and
+// that you need MYPROTO=NETLINK_ROUTE, since the kernel arp code {re,ab}uses rtnl (NETLINK_ROUTE)
+
#else
#define MYPROTO NETLINK_ROUTE
#define MYMGRP RTMGRP_IPV4_ROUTE
#endif
@@ -53,10 +56,13 @@
}
int open_netlink()
{
- int sock = socket(AF_NETLINK,SOCK_DGRAM
,MYPROTO);
+ int sock = socket(AF_NETLINK,SOCK_RAW
,MYPROTO);
struct sockaddr_nl addr;
+
+ memset((void *)&addr, 0, sizeof(addr));
+
if (sock<0)
return sock;
addr.nl_family = AF_NETLINK;
addr.nl_pid = getpid();