1/* Definitions for Rose packet radio address family.
2   Copyright (C) 1998, 1999 Free Software Foundation, Inc.
3   This file is part of the GNU C Library.
4
5   The GNU C Library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9
10   The GNU C Library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14
15   You should have received a copy of the GNU Lesser General Public
16   License along with the GNU C Library; if not, write to the Free
17   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18   02111-1307 USA.  */
19
20/* What follows is copied from the 2.1.93 <linux/rose.h>.  */
21
22#ifndef _NETROSE_ROSE_H
23#define _NETROSE_ROSE_H 1
24
25/* Socket level values.  */
26#define SOL_ROSE        260
27
28
29/* These are the public elements of the Linux kernel Rose
30   implementation.  For kernel AX.25 see the file ax25.h. This file
31   requires ax25.h for the definition of the ax25_address structure.  */
32#define ROSE_MTU	251
33
34#define ROSE_MAX_DIGIS	6
35
36#define	ROSE_DEFER	1
37#define	ROSE_T1		2
38#define	ROSE_T2		3
39#define	ROSE_T3		4
40#define	ROSE_IDLE	5
41#define	ROSE_QBITINCL	6
42#define	ROSE_HOLDBACK	7
43
44#define	SIOCRSGCAUSE		(SIOCPROTOPRIVATE + 0)
45#define	SIOCRSSCAUSE		(SIOCPROTOPRIVATE + 1)
46#define	SIOCRSL2CALL		(SIOCPROTOPRIVATE + 2)
47#define	SIOCRSSL2CALL		(SIOCPROTOPRIVATE + 2)
48#define	SIOCRSACCEPT		(SIOCPROTOPRIVATE + 3)
49#define	SIOCRSCLRRT		(SIOCPROTOPRIVATE + 4)
50#define	SIOCRSGL2CALL		(SIOCPROTOPRIVATE + 5)
51#define	SIOCRSGFACILITIES	(SIOCPROTOPRIVATE + 6)
52
53#define	ROSE_DTE_ORIGINATED	0x00
54#define	ROSE_NUMBER_BUSY	0x01
55#define	ROSE_INVALID_FACILITY	0x03
56#define	ROSE_NETWORK_CONGESTION	0x05
57#define	ROSE_OUT_OF_ORDER	0x09
58#define	ROSE_ACCESS_BARRED	0x0B
59#define	ROSE_NOT_OBTAINABLE	0x0D
60#define	ROSE_REMOTE_PROCEDURE	0x11
61#define	ROSE_LOCAL_PROCEDURE	0x13
62#define	ROSE_SHIP_ABSENT	0x39
63
64
65typedef struct
66{
67  char rose_addr[5];
68} rose_address;
69
70struct sockaddr_rose
71{
72  sa_family_t srose_family;
73  rose_address srose_addr;
74  ax25_address srose_call;
75  int srose_ndigis;
76  ax25_address	srose_digi;
77};
78
79struct full_sockaddr_rose
80{
81  sa_family_t srose_family;
82  rose_address srose_addr;
83  ax25_address srose_call;
84  unsigned int srose_ndigis;
85  ax25_address srose_digis[ROSE_MAX_DIGIS];
86};
87
88struct rose_route_struct
89{
90  rose_address address;
91  unsigned short int mask;
92  ax25_address	neighbour;
93  char device[16];
94  unsigned char	ndigis;
95  ax25_address digipeaters[AX25_MAX_DIGIS];
96};
97
98struct rose_cause_struct
99{
100  unsigned char	cause;
101  unsigned char	diagnostic;
102};
103
104struct rose_facilities_struct
105{
106  rose_address source_addr,   dest_addr;
107  ax25_address source_call,   dest_call;
108  unsigned char source_ndigis, dest_ndigis;
109  ax25_address source_digis[ROSE_MAX_DIGIS];
110  ax25_address dest_digis[ROSE_MAX_DIGIS];
111  unsigned int rand;
112  rose_address fail_addr;
113  ax25_address fail_call;
114};
115
116#endif	/* netrose/rose.h */
117