linux/arch/s390/include/uapi/asm/qeth.h
<<
>>
Prefs
   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 <tspat@de.ibm.com>
   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
  24struct 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
  31enum qeth_arp_ipaddrtype {
  32        QETHARP_IP_ADDR_V4 = 1,
  33        QETHARP_IP_ADDR_V6 = 2,
  34};
  35struct 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
  42struct 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
  49struct 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
  56struct qeth_arp_qi_entry7_short {
  57        struct qeth_arp_entrytype type;
  58        __u8 macaddr[6];
  59        __u8 ipaddr[4];
  60} __attribute__((packed));
  61
  62struct qeth_arp_qi_entry7_short_ipv6 {
  63        struct qeth_arp_entrytype type;
  64        __u8 macaddr[6];
  65        __u8 ipaddr[16];
  66} __attribute__((packed));
  67
  68struct 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
  74struct 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
  80struct qeth_arp_qi_entry5_short {
  81        struct qeth_arp_entrytype type;
  82        __u8 ipaddr[4];
  83} __attribute__((packed));
  84
  85struct 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
 101struct 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
 110struct 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