162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
262306a36Sopenharmony_ci/* atm_tcp.h - Driver-specific declarations of the ATMTCP driver (for use by
362306a36Sopenharmony_ci	       driver-specific utilities) */
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci/* Written 1997-2000 by Werner Almesberger, EPFL LRC/ICA */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#ifndef _UAPILINUX_ATM_TCP_H
962306a36Sopenharmony_ci#define _UAPILINUX_ATM_TCP_H
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include <linux/atmapi.h>
1262306a36Sopenharmony_ci#include <linux/atm.h>
1362306a36Sopenharmony_ci#include <linux/atmioc.h>
1462306a36Sopenharmony_ci#include <linux/types.h>
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci/*
1862306a36Sopenharmony_ci * All values in struct atmtcp_hdr are in network byte order
1962306a36Sopenharmony_ci */
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_cistruct atmtcp_hdr {
2262306a36Sopenharmony_ci	__u16	vpi;
2362306a36Sopenharmony_ci	__u16	vci;
2462306a36Sopenharmony_ci	__u32	length;		/* ... of data part */
2562306a36Sopenharmony_ci};
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci/*
2862306a36Sopenharmony_ci * All values in struct atmtcp_command are in host byte order
2962306a36Sopenharmony_ci */
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#define ATMTCP_HDR_MAGIC	(~0)	/* this length indicates a command */
3262306a36Sopenharmony_ci#define ATMTCP_CTRL_OPEN	1	/* request/reply */
3362306a36Sopenharmony_ci#define ATMTCP_CTRL_CLOSE	2	/* request/reply */
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_cistruct atmtcp_control {
3662306a36Sopenharmony_ci	struct atmtcp_hdr hdr;	/* must be first */
3762306a36Sopenharmony_ci	int type;		/* message type; both directions */
3862306a36Sopenharmony_ci	atm_kptr_t vcc;		/* both directions */
3962306a36Sopenharmony_ci	struct sockaddr_atmpvc addr; /* suggested value from kernel */
4062306a36Sopenharmony_ci	struct atm_qos	qos;	/* both directions */
4162306a36Sopenharmony_ci	int result;		/* to kernel only */
4262306a36Sopenharmony_ci} __ATM_API_ALIGN;
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci/*
4562306a36Sopenharmony_ci * Field usage:
4662306a36Sopenharmony_ci * Messge type	dir.	hdr.v?i	type	addr	qos	vcc	result
4762306a36Sopenharmony_ci * -----------  ----	------- ----	----	---	---	------
4862306a36Sopenharmony_ci * OPEN		K->D	Y	Y	Y	Y	Y	0
4962306a36Sopenharmony_ci * OPEN		D->K	-	Y	Y	Y	Y	Y
5062306a36Sopenharmony_ci * CLOSE	K->D	-	-	Y	-	Y	0
5162306a36Sopenharmony_ci * CLOSE	D->K	-	-	-	-	Y	Y
5262306a36Sopenharmony_ci */
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci#define SIOCSIFATMTCP	_IO('a',ATMIOC_ITF)	/* set ATMTCP mode */
5562306a36Sopenharmony_ci#define ATMTCP_CREATE	_IO('a',ATMIOC_ITF+14)	/* create persistent ATMTCP
5662306a36Sopenharmony_ci						   interface */
5762306a36Sopenharmony_ci#define ATMTCP_REMOVE	_IO('a',ATMIOC_ITF+15)	/* destroy persistent ATMTCP
5862306a36Sopenharmony_ci						   interface */
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci#endif /* _UAPILINUX_ATM_TCP_H */
63