Netlink ÊÇÒ»ÖÖÔÚÄÚºËÓëÓû§Ó¦ÓÃ¼ä½øÐÐË«ÏòÊý¾Ý´«ÊäµÄ·Ç³£ºÃµÄ·½Ê½£¬Óû§Ì¬Ó¦ÓÃʹÓñê×¼µÄ socket API ¾Í¿ÉÒÔʹÓà netlink ÌṩµÄÇ¿´ó¹¦ÄÜ£¬ÄÚºË̬ÐèҪʹÓÃרÃŵÄÄÚºË API À´Ê¹Óà netlink¡£
Óû§Ì¬Ê¹ÓÃnetlink£º
Óû§Ì¬Ó¦ÓÃʹÓñê×¼µÄsocket APIs£¬ socket(), bind(), sendmsg(), recvmsg() ºÍ close() ¾ÍÄܺÜÈÝÒ×µØÊ¹Óà netlink socket¡£×¢Ò⣬ʹÓà netlink µÄÓ¦ÓñØÐë°üº¬Í·Îļþ linux/netlink.h¡£µ±È» socket ÐèÒªµÄÍ·ÎļþÒ²±Ø²»¿ÉÉÙ£¬sys/socket.h¡£
´´½¨netlink socket£º
ΪÁË´´½¨Ò»¸ö netlink socket£¬Óû§ÐèҪʹÓÃÈçϲÎÊýµ÷Óà socket():
socket(AF_NETLINK, SOCK_RAW, netlink_type)
˵Ã÷£º
µÚÒ»¸ö²ÎÊý±ØÐëÊÇ AF_NETLINK »ò PF_NETLINK£¬ÔÚ Linux ÖУ¬ËüÃÇÁ©Êµ¼ÊΪһ¸ö¶«Î÷£¬Ëü±íʾҪʹÓÃnetlink£¬µÚ¶þ¸ö²ÎÊý±ØÐëÊÇSOCK_RAW»òSOCK_DGRAM£¬µÚÈý¸ö²ÎÊýÖ¸¶¨netlinkÐÒéÀàÐÍ£¬ÈçÇ°Ãæ½²µÄÓû§×Ô¶¨ÒåÐÒéÀàÐÍNETLINK_MYTEST£¬ NETLINK_GENERICÊÇÒ»¸öͨÓõÄÐÒéÀàÐÍ£¬ËüÊÇרÃÅΪÓû§Ê¹Óõģ¬Òò´Ë£¬Óû§¿ÉÒÔÖ±½ÓʹÓÃËü£¬¶ø²»±ØÔÙÌí¼ÓеÄÐÒéÀàÐÍ¡£ÄÚºËÔ¤¶¨ÒåµÄÐÒéÀàÐÍÓУº
#define NETLINK_ROUTE 0 /* Routing/device hook */
#define NETLINK_W1 1 /* 1-wire subsystem */
#define NETLINK_USERSOCK 2 /* Reserved for user mode socket protocols */
#define NETLINK_FIREWALL 3 /* Firewalling hook */
#define NETLINK_INET_DIAG 4 /* INET socket monitoring */
#define NETLINK_NFLOG 5 /* netfilter/iptables ULOG */
#define NETLINK_XFRM 6 /* ipsec */
#define NETLINK_SELINUX 7 /* SELinux event notifications */
#define NETLINK_ISCSI 8 /* Open-iSCSI */
#define NETLINK_AUDIT 9 /* auditing */
#define NETLINK_FIB_LOOKUP 10
#define NETLINK_CONNECTOR 11
#define NETLINK_NETFILTER 12 /* netfilter subsystem */
#define NETLINK_IP6_FW 13
#define NETLINK_DNRTMSG 14 /* DECnet routing messages */
#define NETLINK_KOBJECT_UEVENT 15 /* Kernel messages to userspace */
#define NETLINK_GENERIC 16
¶ÔÓÚÿһ¸önetlinkÐÒéÀàÐÍ£¬¿ÉÒÔÓжà´ï 32¶à²¥×飬ÿһ¸ö¶à²¥×éÓÃÒ»¸öλ±íʾ£¬netlink µÄ¶à²¥ÌØÐÔʹµÃ·¢ËÍÏûÏ¢¸øÍ¬Ò»¸ö×é½öÐèÒªÒ»´Îϵͳµ÷Óã¬Òò¶ø¶ÔÓÚÐèÒª¶à²¦ÏûÏ¢µÄÓ¦ÓöøÑÔ£¬´ó´óµØ½µµÍÁËϵͳµ÷ÓõĴÎÊý¡£