Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.5.6.
  1/*
  2 * Copyright (C) 2002 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
  3 * Licensed under the GPL
  4 */
  5
  6#ifndef __UM_VECTOR_USER_H
  7#define __UM_VECTOR_USER_H
  8
  9#define MAXVARGS	20
 10
 11#define TOKEN_IFNAME "ifname"
 12
 13#define TRANS_RAW "raw"
 14#define TRANS_RAW_LEN strlen(TRANS_RAW)
 15
 16#define TRANS_TAP "tap"
 17#define TRANS_TAP_LEN strlen(TRANS_TAP)
 18
 19
 20#define TRANS_GRE "gre"
 21#define TRANS_GRE_LEN strlen(TRANS_RAW)
 22
 23#define TRANS_L2TPV3 "l2tpv3"
 24#define TRANS_L2TPV3_LEN strlen(TRANS_L2TPV3)
 25
 26#ifndef IPPROTO_GRE
 27#define IPPROTO_GRE 0x2F
 28#endif
 29
 30#define GRE_MODE_CHECKSUM	cpu_to_be16(8 << 12)	/* checksum */
 31#define GRE_MODE_RESERVED	cpu_to_be16(4 << 12)	/* unused */
 32#define GRE_MODE_KEY		cpu_to_be16(2 << 12)	/* KEY present */
 33#define GRE_MODE_SEQUENCE	cpu_to_be16(1 << 12)	/* sequence */
 34
 35#define GRE_IRB cpu_to_be16(0x6558)
 36
 37#define L2TPV3_DATA_PACKET 0x30000
 38
 39/* IANA-assigned IP protocol ID for L2TPv3 */
 40
 41#ifndef IPPROTO_L2TP
 42#define IPPROTO_L2TP 0x73
 43#endif
 44
 45struct arglist {
 46	int	numargs;
 47	char	*tokens[MAXVARGS];
 48	char	*values[MAXVARGS];
 49};
 50
 51/* Separating read and write FDs allows us to have different
 52 * rx and tx method. Example - read tap via raw socket using
 53 * recvmmsg, write using legacy tap write calls
 54 */
 55
 56struct vector_fds {
 57	int rx_fd;
 58	int tx_fd;
 59	void *remote_addr;
 60	int remote_addr_size;
 61};
 62
 63#define VECTOR_READ	1
 64#define VECTOR_WRITE	(1 < 1)
 65#define VECTOR_HEADERS	(1 < 2)
 66
 67extern struct arglist *uml_parse_vector_ifspec(char *arg);
 68
 69extern struct vector_fds *uml_vector_user_open(
 70	int unit,
 71	struct arglist *parsed
 72);
 73
 74extern char *uml_vector_fetch_arg(
 75	struct arglist *ifspec,
 76	char *token
 77);
 78
 79extern int uml_vector_recvmsg(int fd, void *hdr, int flags);
 80extern int uml_vector_sendmsg(int fd, void *hdr, int flags);
 81extern int uml_vector_writev(int fd, void *hdr, int iovcount);
 82extern int uml_vector_sendmmsg(
 83	int fd, void *msgvec,
 84	unsigned int vlen,
 85	unsigned int flags
 86);
 87extern int uml_vector_recvmmsg(
 88	int fd,
 89	void *msgvec,
 90	unsigned int vlen,
 91	unsigned int flags
 92);
 93extern void *uml_vector_default_bpf(int fd, void *mac);
 94extern int uml_vector_attach_bpf(int fd, void *bpf, int bpf_len);
 95extern bool uml_raw_enable_qdisc_bypass(int fd);
 96extern bool uml_raw_enable_vnet_headers(int fd);
 97extern bool uml_tap_enable_vnet_headers(int fd);
 98
 99
100#endif