Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/net/compat.h
26282 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
#ifndef NET_COMPAT_H
3
#define NET_COMPAT_H
4
5
6
struct sock;
7
8
#include <linux/compat.h>
9
10
struct compat_msghdr {
11
compat_uptr_t msg_name; /* void * */
12
compat_int_t msg_namelen;
13
compat_uptr_t msg_iov; /* struct compat_iovec * */
14
compat_size_t msg_iovlen;
15
compat_uptr_t msg_control; /* void * */
16
compat_size_t msg_controllen;
17
compat_uint_t msg_flags;
18
};
19
20
struct compat_mmsghdr {
21
struct compat_msghdr msg_hdr;
22
compat_uint_t msg_len;
23
};
24
25
struct compat_cmsghdr {
26
compat_size_t cmsg_len;
27
compat_int_t cmsg_level;
28
compat_int_t cmsg_type;
29
};
30
31
struct compat_rtentry {
32
u32 rt_pad1;
33
struct sockaddr rt_dst; /* target address */
34
struct sockaddr rt_gateway; /* gateway addr (RTF_GATEWAY) */
35
struct sockaddr rt_genmask; /* target network mask (IP) */
36
unsigned short rt_flags;
37
short rt_pad2;
38
u32 rt_pad3;
39
unsigned char rt_tos;
40
unsigned char rt_class;
41
short rt_pad4;
42
short rt_metric; /* +1 for binary compatibility! */
43
compat_uptr_t rt_dev; /* forcing the device at add */
44
u32 rt_mtu; /* per route MTU/Window */
45
u32 rt_window; /* Window clamping */
46
unsigned short rt_irtt; /* Initial RTT */
47
};
48
49
int __get_compat_msghdr(struct msghdr *kmsg, struct compat_msghdr *msg,
50
struct sockaddr __user **save_addr);
51
int get_compat_msghdr(struct msghdr *, struct compat_msghdr __user *,
52
struct sockaddr __user **, struct iovec **);
53
int put_cmsg_compat(struct msghdr*, int, int, int, void *);
54
55
int cmsghdr_from_user_compat_to_kern(struct msghdr *, struct sock *,
56
unsigned char *, int);
57
58
struct compat_group_req {
59
__u32 gr_interface;
60
struct __kernel_sockaddr_storage gr_group
61
__aligned(4);
62
} __packed;
63
64
struct compat_group_source_req {
65
__u32 gsr_interface;
66
struct __kernel_sockaddr_storage gsr_group
67
__aligned(4);
68
struct __kernel_sockaddr_storage gsr_source
69
__aligned(4);
70
} __packed;
71
72
struct compat_group_filter {
73
union {
74
struct {
75
__u32 gf_interface_aux;
76
struct __kernel_sockaddr_storage gf_group_aux
77
__aligned(4);
78
__u32 gf_fmode_aux;
79
__u32 gf_numsrc_aux;
80
struct __kernel_sockaddr_storage gf_slist[1]
81
__aligned(4);
82
} __packed;
83
struct {
84
__u32 gf_interface;
85
struct __kernel_sockaddr_storage gf_group
86
__aligned(4);
87
__u32 gf_fmode;
88
__u32 gf_numsrc;
89
struct __kernel_sockaddr_storage gf_slist_flex[]
90
__aligned(4);
91
} __packed;
92
};
93
} __packed;
94
95
#endif /* NET_COMPAT_H */
96
97