netlink.h
001: #ifndef __LINUX_NETLINK_H
002: #define __LINUX_NETLINK_H
003: 
004: #include <linux/socket.h> 
005: #include <linux/types.h>
006: 
007: #define NETLINK_ROUTE           0       
008: #define NETLINK_UNUSED          1       
009: #define NETLINK_USERSOCK        2       
010: #define NETLINK_FIREWALL        3       
011: #define NETLINK_INET_DIAG       4       
012: #define NETLINK_NFLOG           5       
013: #define NETLINK_XFRM            6       
014: #define NETLINK_SELINUX         7       
015: #define NETLINK_ISCSI           8       
016: #define NETLINK_AUDIT           9       
017: #define NETLINK_FIB_LOOKUP      10      
018: #define NETLINK_CONNECTOR       11
019: #define NETLINK_NETFILTER       12      
020: #define NETLINK_IP6_FW          13
021: #define NETLINK_DNRTMSG         14      
022: #define NETLINK_KOBJECT_UEVENT  15      
023: #define NETLINK_GENERIC         16
024: 
025: #define NETLINK_SCSITRANSPORT   18      
026: #define NETLINK_ECRYPTFS        19
027: #define NETLINK_RDMA            20
028: #define NETLINK_CRYPTO          21      
029: 
030: #define MAX_LINKS 32            
031: 
032: struct sockaddr_nl {
033:         __kernel_sa_family_t    nl_family;      
034:         unsigned short  nl_pad;         
035:         __u32           nl_pid;         
036:         __u32           nl_groups;      
037: };
038: 
039: struct nlmsghdr {
040:         __u32           nlmsg_len;      
041:         __u16           nlmsg_type;     
042:         __u16           nlmsg_flags;    
043:         __u32           nlmsg_seq;      
044:         __u32           nlmsg_pid;      
045: };
046: 
047: 
048: 
049: #define NLM_F_REQUEST           1       
050: #define NLM_F_MULTI             2       
051: #define NLM_F_ACK               4       
052: #define NLM_F_ECHO              8       
053: #define NLM_F_DUMP_INTR         16      
054: 
055: 
056: #define NLM_F_ROOT      0x100   
057: #define NLM_F_MATCH     0x200   
058: #define NLM_F_ATOMIC    0x400   
059: #define NLM_F_DUMP      (NLM_F_ROOT|NLM_F_MATCH)
060: 
061: 
062: #define NLM_F_REPLACE   0x100   
063: #define NLM_F_EXCL      0x200   
064: #define NLM_F_CREATE    0x400   
065: #define NLM_F_APPEND    0x800   
066: 
067: 
068: 
069: 
070: 
071: 
072: 
073: 
074: 
075: 
076: #define NLMSG_ALIGNTO   4U
077: #define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )
078: #define NLMSG_HDRLEN     ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
079: #define NLMSG_LENGTH(len) ((len)+NLMSG_ALIGN(NLMSG_HDRLEN))
080: #define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))
081: #define NLMSG_DATA(nlh)  ((void*)(((char*)nlh) + NLMSG_LENGTH(0)))
082: #define NLMSG_NEXT(nlh,len)      ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len), \
083:                                   (struct nlmsghdr*)(((char*)(nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))
084: #define NLMSG_OK(nlh,len) ((len) >= (int)sizeof(struct nlmsghdr) && \
085:                            (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && \
086:                            (nlh)->nlmsg_len <= (len))
087: #define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))
088: 
089: #define NLMSG_NOOP              0x1     
090: #define NLMSG_ERROR             0x2     
091: #define NLMSG_DONE              0x3     
092: #define NLMSG_OVERRUN           0x4     
093: 
094: #define NLMSG_MIN_TYPE          0x10    
095: 
096: struct nlmsgerr {
097:         int             error;
098:         struct nlmsghdr msg;
099: };
100: 
101: #define NETLINK_ADD_MEMBERSHIP  1
102: #define NETLINK_DROP_MEMBERSHIP 2
103: #define NETLINK_PKTINFO         3
104: #define NETLINK_BROADCAST_ERROR 4
105: #define NETLINK_NO_ENOBUFS      5
106: 
107: struct nl_pktinfo {
108:         __u32   group;
109: };
110: 
111: #define NET_MAJOR 36            
112: 
113: enum {
114:         NETLINK_UNCONNECTED = 0,
115:         NETLINK_CONNECTED,
116: };
117: 
118: 
119: 
120: 
121: 
122: 
123: 
124: 
125: 
126: 
127: struct nlattr {
128:         __u16           nla_len;
129:         __u16           nla_type;
130: };
131: 
132: 
133: 
134: 
135: 
136: 
137: 
138: 
139: 
140: 
141: 
142: #define NLA_F_NESTED            (1 << 15)
143: #define NLA_F_NET_BYTEORDER     (1 << 14)
144: #define NLA_TYPE_MASK           ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
145: 
146: #define NLA_ALIGNTO             4
147: #define NLA_ALIGN(len)          (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
148: #define NLA_HDRLEN              ((int) NLA_ALIGN(sizeof(struct nlattr)))
149: 
150: 
151: #endif  
152: 
      
      
      
      
   
      
      
         
            
            © Andrew Scott 2006 -
            2025, 
            All Rights Reserved