130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* atm_tcp.h - Driver-specific declarations of the ATMTCP driver (for use by
230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	       driver-specific utilities) */
330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Written 1997-2000 by Werner Almesberger, EPFL LRC/ICA */
530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _UAPILINUX_ATM_TCP_H
830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _UAPILINUX_ATM_TCP_H
930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/atmapi.h>
1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/atm.h>
1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/atmioc.h>
1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h>
1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * All values in struct atmtcp_hdr are in network byte order
1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct atmtcp_hdr {
2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16	vpi;
2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16	vci;
2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	length;		/* ... of data part */
2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * All values in struct atmtcp_command are in host byte order
2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ATMTCP_HDR_MAGIC	(~0)	/* this length indicates a command */
3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ATMTCP_CTRL_OPEN	1	/* request/reply */
3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ATMTCP_CTRL_CLOSE	2	/* request/reply */
3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct atmtcp_control {
3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct atmtcp_hdr hdr;	/* must be first */
3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int type;		/* message type; both directions */
3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	atm_kptr_t vcc;		/* both directions */
3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct sockaddr_atmpvc addr; /* suggested value from kernel */
3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct atm_qos	qos;	/* both directions */
4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int result;		/* to kernel only */
4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __ATM_API_ALIGN;
4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Field usage:
4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Messge type	dir.	hdr.v?i	type	addr	qos	vcc	result
4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * -----------  ----	------- ----	----	---	---	------
4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * OPEN		K->D	Y	Y	Y	Y	Y	0
4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * OPEN		D->K	-	Y	Y	Y	Y	Y
4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * CLOSE	K->D	-	-	Y	-	Y	0
5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * CLOSE	D->K	-	-	-	-	Y	Y
5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SIOCSIFATMTCP	_IO('a',ATMIOC_ITF)	/* set ATMTCP mode */
5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ATMTCP_CREATE	_IO('a',ATMIOC_ITF+14)	/* create persistent ATMTCP
5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng						   interface */
5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ATMTCP_REMOVE	_IO('a',ATMIOC_ITF+15)	/* destroy persistent ATMTCP
5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng						   interface */
5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _UAPILINUX_ATM_TCP_H */
62