OpenCores
URL https://opencores.org/ocsvn/hf-risc/hf-risc/trunk

Subversion Repositories hf-risc

[/] [hf-risc/] [trunk/] [tools/] [riscv-gnu-toolchain-master/] [linux-headers/] [include/] [linux/] [netlink.h] - Blame information for rev 13

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 serginhofr
#ifndef __LINUX_NETLINK_H
2
#define __LINUX_NETLINK_H
3
 
4
#include <linux/kernel.h>
5
#include <linux/socket.h> /* for __kernel_sa_family_t */
6
#include <linux/types.h>
7
 
8
#define NETLINK_ROUTE           0        /* Routing/device hook                          */
9
#define NETLINK_UNUSED          1       /* Unused number                                */
10
#define NETLINK_USERSOCK        2       /* Reserved for user mode socket protocols      */
11
#define NETLINK_FIREWALL        3       /* Unused number, formerly ip_queue             */
12
#define NETLINK_SOCK_DIAG       4       /* socket monitoring                            */
13
#define NETLINK_NFLOG           5       /* netfilter/iptables ULOG */
14
#define NETLINK_XFRM            6       /* ipsec */
15
#define NETLINK_SELINUX         7       /* SELinux event notifications */
16
#define NETLINK_ISCSI           8       /* Open-iSCSI */
17
#define NETLINK_AUDIT           9       /* auditing */
18
#define NETLINK_FIB_LOOKUP      10      
19
#define NETLINK_CONNECTOR       11
20
#define NETLINK_NETFILTER       12      /* netfilter subsystem */
21
#define NETLINK_IP6_FW          13
22
#define NETLINK_DNRTMSG         14      /* DECnet routing messages */
23
#define NETLINK_KOBJECT_UEVENT  15      /* Kernel messages to userspace */
24
#define NETLINK_GENERIC         16
25
/* leave room for NETLINK_DM (DM Events) */
26
#define NETLINK_SCSITRANSPORT   18      /* SCSI Transports */
27
#define NETLINK_ECRYPTFS        19
28
#define NETLINK_RDMA            20
29
#define NETLINK_CRYPTO          21      /* Crypto layer */
30
 
31
#define NETLINK_INET_DIAG       NETLINK_SOCK_DIAG
32
 
33
#define MAX_LINKS 32            
34
 
35
struct sockaddr_nl {
36
        __kernel_sa_family_t    nl_family;      /* AF_NETLINK   */
37
        unsigned short  nl_pad;         /* zero         */
38
        __u32           nl_pid;         /* port ID      */
39
        __u32           nl_groups;      /* multicast groups mask */
40
};
41
 
42
struct nlmsghdr {
43
        __u32           nlmsg_len;      /* Length of message including header */
44
        __u16           nlmsg_type;     /* Message content */
45
        __u16           nlmsg_flags;    /* Additional flags */
46
        __u32           nlmsg_seq;      /* Sequence number */
47
        __u32           nlmsg_pid;      /* Sending process port ID */
48
};
49
 
50
/* Flags values */
51
 
52
#define NLM_F_REQUEST           1       /* It is request message.       */
53
#define NLM_F_MULTI             2       /* Multipart message, terminated by NLMSG_DONE */
54
#define NLM_F_ACK               4       /* Reply with ack, with zero or error code */
55
#define NLM_F_ECHO              8       /* Echo this request            */
56
#define NLM_F_DUMP_INTR         16      /* Dump was inconsistent due to sequence change */
57
 
58
/* Modifiers to GET request */
59
#define NLM_F_ROOT      0x100   /* specify tree root    */
60
#define NLM_F_MATCH     0x200   /* return all matching  */
61
#define NLM_F_ATOMIC    0x400   /* atomic GET           */
62
#define NLM_F_DUMP      (NLM_F_ROOT|NLM_F_MATCH)
63
 
64
/* Modifiers to NEW request */
65
#define NLM_F_REPLACE   0x100   /* Override existing            */
66
#define NLM_F_EXCL      0x200   /* Do not touch, if it exists   */
67
#define NLM_F_CREATE    0x400   /* Create, if it does not exist */
68
#define NLM_F_APPEND    0x800   /* Add to end of list           */
69
 
70
/*
71
   4.4BSD ADD           NLM_F_CREATE|NLM_F_EXCL
72
   4.4BSD CHANGE        NLM_F_REPLACE
73
 
74
   True CHANGE          NLM_F_CREATE|NLM_F_REPLACE
75
   Append               NLM_F_CREATE
76
   Check                NLM_F_EXCL
77
 */
78
 
79
#define NLMSG_ALIGNTO   4U
80
#define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )
81
#define NLMSG_HDRLEN     ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
82
#define NLMSG_LENGTH(len) ((len) + NLMSG_HDRLEN)
83
#define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))
84
#define NLMSG_DATA(nlh)  ((void*)(((char*)nlh) + NLMSG_LENGTH(0)))
85
#define NLMSG_NEXT(nlh,len)      ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len), \
86
                                  (struct nlmsghdr*)(((char*)(nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))
87
#define NLMSG_OK(nlh,len) ((len) >= (int)sizeof(struct nlmsghdr) && \
88
                           (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && \
89
                           (nlh)->nlmsg_len <= (len))
90
#define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))
91
 
92
#define NLMSG_NOOP              0x1     /* Nothing.             */
93
#define NLMSG_ERROR             0x2     /* Error                */
94
#define NLMSG_DONE              0x3     /* End of a dump        */
95
#define NLMSG_OVERRUN           0x4     /* Data lost            */
96
 
97
#define NLMSG_MIN_TYPE          0x10    /* < 0x10: reserved control messages */
98
 
99
struct nlmsgerr {
100
        int             error;
101
        struct nlmsghdr msg;
102
};
103
 
104
#define NETLINK_ADD_MEMBERSHIP  1
105
#define NETLINK_DROP_MEMBERSHIP 2
106
#define NETLINK_PKTINFO         3
107
#define NETLINK_BROADCAST_ERROR 4
108
#define NETLINK_NO_ENOBUFS      5
109
#define NETLINK_RX_RING         6
110
#define NETLINK_TX_RING         7
111
 
112
struct nl_pktinfo {
113
        __u32   group;
114
};
115
 
116
struct nl_mmap_req {
117
        unsigned int    nm_block_size;
118
        unsigned int    nm_block_nr;
119
        unsigned int    nm_frame_size;
120
        unsigned int    nm_frame_nr;
121
};
122
 
123
struct nl_mmap_hdr {
124
        unsigned int    nm_status;
125
        unsigned int    nm_len;
126
        __u32           nm_group;
127
        /* credentials */
128
        __u32           nm_pid;
129
        __u32           nm_uid;
130
        __u32           nm_gid;
131
};
132
 
133
enum nl_mmap_status {
134
        NL_MMAP_STATUS_UNUSED,
135
        NL_MMAP_STATUS_RESERVED,
136
        NL_MMAP_STATUS_VALID,
137
        NL_MMAP_STATUS_COPY,
138
        NL_MMAP_STATUS_SKIP,
139
};
140
 
141
#define NL_MMAP_MSG_ALIGNMENT           NLMSG_ALIGNTO
142
#define NL_MMAP_MSG_ALIGN(sz)           __ALIGN_KERNEL(sz, NL_MMAP_MSG_ALIGNMENT)
143
#define NL_MMAP_HDRLEN                  NL_MMAP_MSG_ALIGN(sizeof(struct nl_mmap_hdr))
144
 
145
#define NET_MAJOR 36            /* Major 36 is reserved for networking                                          */
146
 
147
enum {
148
        NETLINK_UNCONNECTED = 0,
149
        NETLINK_CONNECTED,
150
};
151
 
152
/*
153
 *  <------- NLA_HDRLEN ------> <-- NLA_ALIGN(payload)-->
154
 * +---------------------+- - -+- - - - - - - - - -+- - -+
155
 * |        Header       | Pad |     Payload       | Pad |
156
 * |   (struct nlattr)   | ing |                   | ing |
157
 * +---------------------+- - -+- - - - - - - - - -+- - -+
158
 *  <-------------- nlattr->nla_len -------------->
159
 */
160
 
161
struct nlattr {
162
        __u16           nla_len;
163
        __u16           nla_type;
164
};
165
 
166
/*
167
 * nla_type (16 bits)
168
 * +---+---+-------------------------------+
169
 * | N | O | Attribute Type                |
170
 * +---+---+-------------------------------+
171
 * N := Carries nested attributes
172
 * O := Payload stored in network byte order
173
 *
174
 * Note: The N and O flag are mutually exclusive.
175
 */
176
#define NLA_F_NESTED            (1 << 15)
177
#define NLA_F_NET_BYTEORDER     (1 << 14)
178
#define NLA_TYPE_MASK           ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
179
 
180
#define NLA_ALIGNTO             4
181
#define NLA_ALIGN(len)          (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
182
#define NLA_HDRLEN              ((int) NLA_ALIGN(sizeof(struct nlattr)))
183
 
184
 
185
#endif /* __LINUX_NETLINK_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.