1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <sys/socket.h>
4 #include <errno.h>
6
7 int main(void)
8 {
9 int sockfd;
10
11 sockfd = socket(AF_NETLINK, SOCK_RAW, 30);
12 if(sockfd < 0)
13 {
14 printf("socket error, %d\n", errno);
15 return -1;
16 }
17 printf("sockfd = %d\n", sockfd);
18
19 return 0;
20 }
第三个参数30是自定义
[root@M:mnt]# ./rawSOCK
socket error, 120
目前的netlink实现已经包含了一个通用的协议类型 NETLINK_GENERIC以方便用户使用
./include/uapi/linux/netlink.h:24:#define NETLINK_GENERIC 16
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <sys/socket.h>
4 #include <errno.h>
5 #include <linux/netlink.h>
6
7 int main(void)
8 {
9 int sockfd;
10
21 sockfd = socket(AF_NETLINK, SOCK_RAW, NETLINK_GENERIC);
12 if(sockfd < 0)
13 {
14 printf("socket error, %d\n", errno);
15 return -1;
16 }
17 printf("sockfd = %d\n", sockfd);
18
19 return 0;
20 }
[root@M:mnt]# ./rawSOCK
sockfd = 3