Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/s390/include/uapi/asm/qeth.h
26481 views
1
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2
/*
3
* ioctl definitions for qeth driver
4
*
5
* Copyright IBM Corp. 2004
6
*
7
* Author(s): Thomas Spatzier <[email protected]>
8
*
9
*/
10
#ifndef __ASM_S390_QETH_IOCTL_H__
11
#define __ASM_S390_QETH_IOCTL_H__
12
#include <linux/types.h>
13
#include <linux/ioctl.h>
14
15
#define SIOC_QETH_ARP_SET_NO_ENTRIES (SIOCDEVPRIVATE)
16
#define SIOC_QETH_ARP_QUERY_INFO (SIOCDEVPRIVATE + 1)
17
#define SIOC_QETH_ARP_ADD_ENTRY (SIOCDEVPRIVATE + 2)
18
#define SIOC_QETH_ARP_REMOVE_ENTRY (SIOCDEVPRIVATE + 3)
19
#define SIOC_QETH_ARP_FLUSH_CACHE (SIOCDEVPRIVATE + 4)
20
#define SIOC_QETH_ADP_SET_SNMP_CONTROL (SIOCDEVPRIVATE + 5)
21
#define SIOC_QETH_GET_CARD_TYPE (SIOCDEVPRIVATE + 6)
22
#define SIOC_QETH_QUERY_OAT (SIOCDEVPRIVATE + 7)
23
24
struct qeth_arp_cache_entry {
25
__u8 macaddr[6];
26
__u8 reserved1[2];
27
__u8 ipaddr[16]; /* for both IPv4 and IPv6 */
28
__u8 reserved2[32];
29
} __attribute__ ((packed));
30
31
enum qeth_arp_ipaddrtype {
32
QETHARP_IP_ADDR_V4 = 1,
33
QETHARP_IP_ADDR_V6 = 2,
34
};
35
struct qeth_arp_entrytype {
36
__u8 mac;
37
__u8 ip;
38
} __attribute__((packed));
39
40
#define QETH_QARP_MEDIASPECIFIC_BYTES 32
41
#define QETH_QARP_MACADDRTYPE_BYTES 1
42
struct qeth_arp_qi_entry7 {
43
__u8 media_specific[QETH_QARP_MEDIASPECIFIC_BYTES];
44
struct qeth_arp_entrytype type;
45
__u8 macaddr[6];
46
__u8 ipaddr[4];
47
} __attribute__((packed));
48
49
struct qeth_arp_qi_entry7_ipv6 {
50
__u8 media_specific[QETH_QARP_MEDIASPECIFIC_BYTES];
51
struct qeth_arp_entrytype type;
52
__u8 macaddr[6];
53
__u8 ipaddr[16];
54
} __attribute__((packed));
55
56
struct qeth_arp_qi_entry7_short {
57
struct qeth_arp_entrytype type;
58
__u8 macaddr[6];
59
__u8 ipaddr[4];
60
} __attribute__((packed));
61
62
struct qeth_arp_qi_entry7_short_ipv6 {
63
struct qeth_arp_entrytype type;
64
__u8 macaddr[6];
65
__u8 ipaddr[16];
66
} __attribute__((packed));
67
68
struct qeth_arp_qi_entry5 {
69
__u8 media_specific[QETH_QARP_MEDIASPECIFIC_BYTES];
70
struct qeth_arp_entrytype type;
71
__u8 ipaddr[4];
72
} __attribute__((packed));
73
74
struct qeth_arp_qi_entry5_ipv6 {
75
__u8 media_specific[QETH_QARP_MEDIASPECIFIC_BYTES];
76
struct qeth_arp_entrytype type;
77
__u8 ipaddr[16];
78
} __attribute__((packed));
79
80
struct qeth_arp_qi_entry5_short {
81
struct qeth_arp_entrytype type;
82
__u8 ipaddr[4];
83
} __attribute__((packed));
84
85
struct qeth_arp_qi_entry5_short_ipv6 {
86
struct qeth_arp_entrytype type;
87
__u8 ipaddr[16];
88
} __attribute__((packed));
89
/*
90
* can be set by user if no "media specific information" is wanted
91
* -> saves a lot of space in user space buffer
92
*/
93
#define QETH_QARP_STRIP_ENTRIES 0x8000
94
#define QETH_QARP_WITH_IPV6 0x4000
95
#define QETH_QARP_REQUEST_MASK 0x00ff
96
97
/* data sent to user space as result of query arp ioctl */
98
#define QETH_QARP_USER_DATA_SIZE 20000
99
#define QETH_QARP_MASK_OFFSET 4
100
#define QETH_QARP_ENTRIES_OFFSET 6
101
struct qeth_arp_query_user_data {
102
union {
103
__u32 data_len; /* set by user space program */
104
__u32 no_entries; /* set by kernel */
105
} u;
106
__u16 mask_bits;
107
char *entries;
108
} __attribute__((packed));
109
110
struct qeth_query_oat_data {
111
__u32 command;
112
__u32 buffer_len;
113
__u32 response_len;
114
__u64 ptr;
115
};
116
#endif /* __ASM_S390_QETH_IOCTL_H__ */
117
118