xref: /csrg-svn/sys/netccitt/x25.h (revision 63216)
141709Ssklower /*
257023Ssklower  * Copyright (c) University of British Columbia, 1984
3*63216Sbostic  * Copyright (c) 1990, 1992, 1993
4*63216Sbostic  *	The Regents of the University of California.  All rights reserved.
557022Ssklower  * 		 University of Erlangen-Nuremberg, Germany, 1992
657022Ssklower  *
757022Ssklower  * This code is derived from software contributed to Berkeley by the
857022Ssklower  * Laboratory for Computation Vision and the Computer Science Department
957022Ssklower  * of the the University of British Columbia and the Computer Science
1057022Ssklower  * Department (IV) of the University of Erlangen-Nuremberg, Germany.
1141709Ssklower  *
1241709Ssklower  * %sccs.include.redist.c%
1341709Ssklower  *
14*63216Sbostic  *	@(#)x25.h	8.1 (Berkeley) 06/10/93
1541709Ssklower  */
1641709Ssklower 
1741596Ssklower #ifdef KERNEL
1841596Ssklower #define PRC_IFUP	3
1941596Ssklower #define PRC_LINKUP	4
2041596Ssklower #define PRC_LINKDOWN	5
2141596Ssklower #define PRC_LINKRESET	6
2241596Ssklower #define PRC_LINKDONTCOPY	7
2357022Ssklower #ifndef PRC_DISCONNECT_REQUEST
2457022Ssklower #define PRC_DISCONNECT_REQUEST 10
2541596Ssklower #endif
2657022Ssklower #endif
2741596Ssklower 
2841596Ssklower #define CCITTPROTO_HDLC		1
2941596Ssklower #define CCITTPROTO_X25		2	/* packet level protocol */
3041596Ssklower #define IEEEPROTO_802LLC	3	/* doesn't belong here */
3141596Ssklower 
3241596Ssklower #define HDLCPROTO_LAP		1
3341596Ssklower #define HDLCPROTO_LAPB		2
3441596Ssklower #define HDLCPROTO_UNSET		3
3541596Ssklower #define HDLCPROTO_LAPD		4
3641596Ssklower 
3745165Ssklower /* socket options */
3845165Ssklower #define PK_ACCTFILE		1	/* use level = CCITTPROTO_X25 */
3945576Ssklower #define PK_FACILITIES		2	/* use level = CCITTPROTO_X25 */
4049925Ssklower #define PK_RTATTACH		3	/* use level = CCITTPROTO_X25 */
4149925Ssklower #define PK_PRLISTEN		4	/* use level = CCITTPROTO_X25 */
4249925Ssklower 
4345889Ssklower #define MAX_FACILITIES		109     /* maximum size for facilities */
4445165Ssklower 
4541596Ssklower /*
4641596Ssklower  *  X.25 Socket address structure.  It contains the  X.121 or variation of
4741596Ssklower  *  X.121, facilities information, higher level protocol value (first four
4841596Ssklower  *  bytes of the User Data field), and the last  12 characters of the User
4941596Ssklower  *  Data field.
5041596Ssklower  */
5141596Ssklower 
5241596Ssklower struct x25_sockaddr {		/* obsolete - use sockaddr_x25 */
5341596Ssklower     short  xaddr_len;		/* Length of xaddr_addr.		*/
5441596Ssklower     u_char xaddr_addr[15];	/* Network dependent or X.121 address.	*/
5541596Ssklower     u_char xaddr_facilities;	/* Facilities information.		*/
5641596Ssklower #define XS_REVERSE_CHARGE	0x01
5741596Ssklower #define XS_HIPRIO		0x02
5841596Ssklower     u_char xaddr_proto[4];	/* Protocol ID (4 bytes of user data).	*/
5941596Ssklower     u_char xaddr_userdata[12];	/* Remaining User data field.		*/
6041596Ssklower };
6141596Ssklower 
6241596Ssklower /*
6341596Ssklower  *  X.25 Socket address structure.  It contains the network id, X.121
6441596Ssklower  *  address, facilities information, higher level protocol value (first four
6541596Ssklower  *  bytes of the User Data field), and up to 12 characters of User Data.
6641596Ssklower  */
6741596Ssklower 
6841596Ssklower struct	sockaddr_x25 {
6941709Ssklower 	u_char	x25_len;
7041709Ssklower 	u_char	x25_family;	/* must be AF_CCITT */
7141596Ssklower 	short	x25_net;	/* network id code (usually a dnic) */
7242140Ssklower 	char	x25_addr[16];	/* X.121 address (null terminated) */
7341596Ssklower 	struct	x25opts {
7441596Ssklower 		char	op_flags;	/* miscellaneous options */
7542140Ssklower 					/* pk_var.h defines other lcd_flags */
7641596Ssklower #define X25_REVERSE_CHARGE	0x01	/* remote DTE pays for call */
7741596Ssklower #define X25_DBIT		0x02	/* not yet supported */
7841596Ssklower #define X25_MQBIT		0x04	/* prepend M&Q bit status byte to packet data */
7941596Ssklower #define X25_OLDSOCKADDR		0x08	/* uses old sockaddr structure */
8045889Ssklower #define X25_DG_CIRCUIT		0x10	/* lcd_flag: used for datagrams */
8145889Ssklower #define X25_DG_ROUTING		0x20	/* lcd_flag: peer addr not yet known */
8245889Ssklower #define X25_MBS_HOLD		0x40	/* lcd_flag: collect m-bit sequences */
8341596Ssklower 		char	op_psize;	/* requested packet size */
8441596Ssklower #define X25_PS128		7
8541596Ssklower #define X25_PS256		8
8641596Ssklower #define X25_PS512		9
8741596Ssklower 		char	op_wsize;	/* window size (1 .. 7) */
8841596Ssklower 		char	op_speed;	/* throughput class */
8941596Ssklower 	} x25_opts;
9041596Ssklower 	short	x25_udlen;	/* user data field length */
9141596Ssklower 	char	x25_udata[16];	/* user data field */
9241596Ssklower };
9342140Ssklower 
9442140Ssklower /*
9542140Ssklower  * network configuration info
9642140Ssklower  * this structure must be 16 bytes long
9742140Ssklower  */
9842140Ssklower 
9942140Ssklower struct	x25config {
10042140Ssklower 	struct	sockaddr_x25 xc_addr;
10142140Ssklower 	/* link level parameters */
10242140Ssklower 	u_short	xc_lproto:4,	/* link level protocol eg. CCITTPROTO_HDLC */
10342140Ssklower 		xc_lptype:4,	/* protocol type eg. HDLCPROTO_LAPB */
10442140Ssklower 		xc_ltrace:1,	/* link level tracing flag */
10557022Ssklower 		xc_lwsize:7;	/* link level window size */
10657022Ssklower 	u_short	xc_lxidxchg:1,  /* link level XID exchange flag - NOT YET */
10742140Ssklower 	/* packet level parameters */
10857022Ssklower 	        xc_rsvd1:2,
10957022Ssklower                 xc_pwsize:3,	/* default window size */
11042140Ssklower 		xc_psize:4,	/* default packet size 7=128, 8=256, ... */
11142140Ssklower 		xc_type:3,	/* network type */
11242140Ssklower #define X25_1976	0
11342140Ssklower #define X25_1980	1
11442140Ssklower #define X25_1984	2
11542140Ssklower #define X25_DDN		3
11642140Ssklower #define X25_BASIC	4
11742140Ssklower 		xc_ptrace:1,	/* packet level tracing flag */
11848899Ssklower 		xc_nodnic:1,	/* remove our dnic when calling on net */
11957022Ssklower 		xc_prepnd0:1;	/* prepend 0 when making offnet calls */
12042140Ssklower 	u_short	xc_maxlcn;	/* max logical channels */
12145165Ssklower 	u_short	xc_dg_idletimo;	/* timeout for idle datagram circuits. */
12242140Ssklower };
12342140Ssklower 
12442140Ssklower #ifdef IFNAMSIZ
12542140Ssklower struct ifreq_x25 {
12642140Ssklower 	char	ifr_name[IFNAMSIZ];		/* if name, e.g. "en0" */
12742140Ssklower 	struct	x25config ifr_xc;
12842140Ssklower };
12942140Ssklower #define	SIOCSIFCONF_X25	_IOW('i', 12, struct ifreq_x25)	/* set ifnet config */
13042140Ssklower #define	SIOCGIFCONF_X25	_IOWR('i',13, struct ifreq_x25)	/* get ifnet config */
13142140Ssklower #endif
132