Penguin
Diff: LinuxNetlinkSocketExample
EditPageHistoryDiffInfoLikePages

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();