brintos

brintos / linux-shallow public Read only

0
0
Text · 4.2 KiB · 287cdc8 Raw
119 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */2/*3 *  Universal TUN/TAP device driver.4 *  Copyright (C) 1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>5 *6 *  This program is free software; you can redistribute it and/or modify7 *  it under the terms of the GNU General Public License as published by8 *  the Free Software Foundation; either version 2 of the License, or9 *  (at your option) any later version.10 *11 *  This program is distributed in the hope that it will be useful,12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the14 *  GNU General Public License for more details.15 */16 17#ifndef _UAPI__IF_TUN_H18#define _UAPI__IF_TUN_H19 20#include <linux/types.h>21#include <linux/if_ether.h>22#include <linux/filter.h>23 24/* Read queue size */25#define TUN_READQ_SIZE	50026/* TUN device type flags: deprecated. Use IFF_TUN/IFF_TAP instead. */27#define TUN_TUN_DEV 	IFF_TUN28#define TUN_TAP_DEV	IFF_TAP29#define TUN_TYPE_MASK   0x000f30 31/* Ioctl defines */32#define TUNSETNOCSUM  _IOW('T', 200, int) 33#define TUNSETDEBUG   _IOW('T', 201, int) 34#define TUNSETIFF     _IOW('T', 202, int) 35#define TUNSETPERSIST _IOW('T', 203, int) 36#define TUNSETOWNER   _IOW('T', 204, int)37#define TUNSETLINK    _IOW('T', 205, int)38#define TUNSETGROUP   _IOW('T', 206, int)39#define TUNGETFEATURES _IOR('T', 207, unsigned int)40#define TUNSETOFFLOAD  _IOW('T', 208, unsigned int)41#define TUNSETTXFILTER _IOW('T', 209, unsigned int)42#define TUNGETIFF      _IOR('T', 210, unsigned int)43#define TUNGETSNDBUF   _IOR('T', 211, int)44#define TUNSETSNDBUF   _IOW('T', 212, int)45#define TUNATTACHFILTER _IOW('T', 213, struct sock_fprog)46#define TUNDETACHFILTER _IOW('T', 214, struct sock_fprog)47#define TUNGETVNETHDRSZ _IOR('T', 215, int)48#define TUNSETVNETHDRSZ _IOW('T', 216, int)49#define TUNSETQUEUE  _IOW('T', 217, int)50#define TUNSETIFINDEX	_IOW('T', 218, unsigned int)51#define TUNGETFILTER _IOR('T', 219, struct sock_fprog)52#define TUNSETVNETLE _IOW('T', 220, int)53#define TUNGETVNETLE _IOR('T', 221, int)54/* The TUNSETVNETBE and TUNGETVNETBE ioctls are for cross-endian support on55 * little-endian hosts. Not all kernel configurations support them, but all56 * configurations that support SET also support GET.57 */58#define TUNSETVNETBE _IOW('T', 222, int)59#define TUNGETVNETBE _IOR('T', 223, int)60#define TUNSETSTEERINGEBPF _IOR('T', 224, int)61#define TUNSETFILTEREBPF _IOR('T', 225, int)62#define TUNSETCARRIER _IOW('T', 226, int)63#define TUNGETDEVNETNS _IO('T', 227)64 65/* TUNSETIFF ifr flags */66#define IFF_TUN		0x000167#define IFF_TAP		0x000268#define IFF_NAPI	0x001069#define IFF_NAPI_FRAGS	0x002070/* Used in TUNSETIFF to bring up tun/tap without carrier */71#define IFF_NO_CARRIER	0x004072#define IFF_NO_PI	0x100073/* This flag has no real effect */74#define IFF_ONE_QUEUE	0x200075#define IFF_VNET_HDR	0x400076#define IFF_TUN_EXCL	0x800077#define IFF_MULTI_QUEUE 0x010078#define IFF_ATTACH_QUEUE 0x020079#define IFF_DETACH_QUEUE 0x040080/* read-only flag */81#define IFF_PERSIST	0x080082#define IFF_NOFILTER	0x100083 84/* Socket options */85#define TUN_TX_TIMESTAMP 186 87/* Features for GSO (TUNSETOFFLOAD). */88#define TUN_F_CSUM	0x01	/* You can hand me unchecksummed packets. */89#define TUN_F_TSO4	0x02	/* I can handle TSO for IPv4 packets */90#define TUN_F_TSO6	0x04	/* I can handle TSO for IPv6 packets */91#define TUN_F_TSO_ECN	0x08	/* I can handle TSO with ECN bits. */92#define TUN_F_UFO	0x10	/* I can handle UFO packets */93#define TUN_F_USO4	0x20	/* I can handle USO for IPv4 packets */94#define TUN_F_USO6	0x40	/* I can handle USO for IPv6 packets */95 96/* Protocol info prepended to the packets (when IFF_NO_PI is not set) */97#define TUN_PKT_STRIP	0x000198struct tun_pi {99	__u16  flags;100	__be16 proto;101};102 103/*104 * Filter spec (used for SETXXFILTER ioctls)105 * This stuff is applicable only to the TAP (Ethernet) devices.106 * If the count is zero the filter is disabled and the driver accepts107 * all packets (promisc mode).108 * If the filter is enabled in order to accept broadcast packets109 * broadcast addr must be explicitly included in the addr list.110 */111#define TUN_FLT_ALLMULTI 0x0001 /* Accept all multicast packets */112struct tun_filter {113	__u16  flags; /* TUN_FLT_ flags see above */114	__u16  count; /* Number of addresses */115	__u8   addr[][ETH_ALEN];116};117 118#endif /* _UAPI__IF_TUN_H */119