xref: /csrg-svn/sys/netccitt/x25.h (revision 42140)
141709Ssklower /*
241709Ssklower  * Copyright (c) University of British Columbia, 1984
341709Ssklower  * Copyright (c) 1990 The Regents of the University of California.
441709Ssklower  * All rights reserved.
541709Ssklower  *
641709Ssklower  * This code is derived from software contributed to Berkeley by
741709Ssklower  * the Laboratory for Computation Vision and the Computer Science Department
841709Ssklower  * of the University of British Columbia.
941709Ssklower  *
1041709Ssklower  * %sccs.include.redist.c%
1141709Ssklower  *
12*42140Ssklower  *	@(#)x25.h	7.3 (Berkeley) 05/16/90
1341709Ssklower  */
1441709Ssklower 
1541596Ssklower #ifdef KERNEL
1641596Ssklower #define PRC_IFUP	3
1741596Ssklower #define PRC_LINKUP	4
1841596Ssklower #define PRC_LINKDOWN	5
1941596Ssklower #define PRC_LINKRESET	6
2041596Ssklower #define PRC_LINKDONTCOPY	7
2141596Ssklower #endif
2241596Ssklower 
2341596Ssklower #define CCITTPROTO_HDLC		1
2441596Ssklower #define CCITTPROTO_X25		2	/* packet level protocol */
2541596Ssklower #define IEEEPROTO_802LLC	3	/* doesn't belong here */
2641596Ssklower 
2741596Ssklower #define HDLCPROTO_LAP		1
2841596Ssklower #define HDLCPROTO_LAPB		2
2941596Ssklower #define HDLCPROTO_UNSET		3
3041596Ssklower #define HDLCPROTO_LAPD		4
3141596Ssklower 
3241596Ssklower /*
3341596Ssklower  *  X.25 Socket address structure.  It contains the  X.121 or variation of
3441596Ssklower  *  X.121, facilities information, higher level protocol value (first four
3541596Ssklower  *  bytes of the User Data field), and the last  12 characters of the User
3641596Ssklower  *  Data field.
3741596Ssklower  */
3841596Ssklower 
3941596Ssklower struct x25_sockaddr {		/* obsolete - use sockaddr_x25 */
4041596Ssklower     short  xaddr_len;		/* Length of xaddr_addr.		*/
4141596Ssklower     u_char xaddr_addr[15];	/* Network dependent or X.121 address.	*/
4241596Ssklower     u_char xaddr_facilities;	/* Facilities information.		*/
4341596Ssklower #define XS_REVERSE_CHARGE	0x01
4441596Ssklower #define XS_HIPRIO		0x02
4541596Ssklower     u_char xaddr_proto[4];	/* Protocol ID (4 bytes of user data).	*/
4641596Ssklower     u_char xaddr_userdata[12];	/* Remaining User data field.		*/
4741596Ssklower };
4841596Ssklower 
4941596Ssklower /*
5041596Ssklower  *  X.25 Socket address structure.  It contains the network id, X.121
5141596Ssklower  *  address, facilities information, higher level protocol value (first four
5241596Ssklower  *  bytes of the User Data field), and up to 12 characters of User Data.
5341596Ssklower  */
5441596Ssklower 
5541596Ssklower struct	sockaddr_x25 {
5641709Ssklower 	u_char	x25_len;
5741709Ssklower 	u_char	x25_family;	/* must be AF_CCITT */
5841596Ssklower 	short	x25_net;	/* network id code (usually a dnic) */
59*42140Ssklower 	char	x25_addr[16];	/* X.121 address (null terminated) */
6041596Ssklower 	struct	x25opts {
6141596Ssklower 		char	op_flags;	/* miscellaneous options */
62*42140Ssklower 					/* pk_var.h defines other lcd_flags */
6341596Ssklower #define X25_REVERSE_CHARGE	0x01	/* remote DTE pays for call */
6441596Ssklower #define X25_DBIT		0x02	/* not yet supported */
6541596Ssklower #define X25_MQBIT		0x04	/* prepend M&Q bit status byte to packet data */
6641596Ssklower #define X25_OLDSOCKADDR		0x08	/* uses old sockaddr structure */
6741596Ssklower 		char	op_psize;	/* requested packet size */
6841596Ssklower #define X25_PS128		7
6941596Ssklower #define X25_PS256		8
7041596Ssklower #define X25_PS512		9
7141596Ssklower 		char	op_wsize;	/* window size (1 .. 7) */
7241596Ssklower 		char	op_speed;	/* throughput class */
7341596Ssklower 	} x25_opts;
7441596Ssklower 	short	x25_udlen;	/* user data field length */
7541596Ssklower 	char	x25_udata[16];	/* user data field */
7641596Ssklower };
77*42140Ssklower 
78*42140Ssklower /*
79*42140Ssklower  * network configuration info
80*42140Ssklower  * this structure must be 16 bytes long
81*42140Ssklower  */
82*42140Ssklower 
83*42140Ssklower struct	x25config {
84*42140Ssklower 	struct	sockaddr_x25 xc_addr;
85*42140Ssklower 	/* link level parameters */
86*42140Ssklower 	u_short	xc_lproto:4,	/* link level protocol eg. CCITTPROTO_HDLC */
87*42140Ssklower 		xc_lptype:4,	/* protocol type eg. HDLCPROTO_LAPB */
88*42140Ssklower 		xc_lwsize:5,	/* link level window size */
89*42140Ssklower 		xc_ltrace:1,	/* link level tracing flag */
90*42140Ssklower 		xc_rsvd1:2;	/* for use by other link-level protocols */
91*42140Ssklower 	/* packet level parameters */
92*42140Ssklower 	u_short	xc_pwsize:3,	/* default window size */
93*42140Ssklower 		xc_psize:4,	/* default packet size 7=128, 8=256, ... */
94*42140Ssklower 		xc_type:3,	/* network type */
95*42140Ssklower #define X25_1976	0
96*42140Ssklower #define X25_1980	1
97*42140Ssklower #define X25_1984	2
98*42140Ssklower #define X25_DDN		3
99*42140Ssklower #define X25_BASIC	4
100*42140Ssklower 		xc_ptrace:1,	/* packet level tracing flag */
101*42140Ssklower 		xc_rsvd2:5;
102*42140Ssklower 	u_short	xc_maxlcn;	/* max logical channels */
103*42140Ssklower 	u_short	xc_dg_idletimo;	/* timeout for idle datagram circuits.
104*42140Ssklower };
105*42140Ssklower 
106*42140Ssklower #ifdef IFNAMSIZ
107*42140Ssklower struct ifreq_x25 {
108*42140Ssklower 	char	ifr_name[IFNAMSIZ];		/* if name, e.g. "en0" */
109*42140Ssklower 	struct	x25config ifr_xc;
110*42140Ssklower };
111*42140Ssklower #define	SIOCSIFCONF_X25	_IOW('i', 12, struct ifreq_x25)	/* set ifnet config */
112*42140Ssklower #define	SIOCGIFCONF_X25	_IOWR('i',13, struct ifreq_x25)	/* get ifnet config */
113*42140Ssklower #endif
114