701e23ce71d3ea9385ed55a0823a727baafb2ca2
[bcm963xx.git] / userapps / opensource / atm2684 / atm / lane / lane.h
1 /*
2  * Global definitions header file
3  *
4  * $Id: lane.h,v 1.9 1995/11/15 08:27:11 carnil Exp $
5  *
6  */
7
8 #ifndef LANE_H
9 #define LANE_H
10
11 /* System includes needed for types */
12 #include <sys/types.h>
13
14 /* Local includes needed for types */
15 #include "units.h"
16
17
18 /* Type definitions */
19 typedef struct {
20   unsigned le_header : 16;
21   unsigned char destaddr[6];
22   unsigned char srcaddr[6];
23   unsigned type_len : 16;
24 } LaneData_t;
25
26 typedef struct {
27   long port;
28   long vpi;
29   long vci;
30 } LaneVcc_t;
31
32 #define LE_HEADER_MAX 0xefff
33
34 typedef struct {
35   unsigned short tag;
36   union {
37     unsigned char mac_address[6];
38     struct route_designator {
39       unsigned char reserved[4];
40       unsigned short designator;
41     } route;
42   } a_r;
43 } LaneDestination_t;
44
45 #define LANE_DEST_NP 0x0000
46 #define LANE_DEST_MAC 0x0001
47 #define LANE_DEST_RD 0x0002
48
49 typedef unsigned short LecId_t;
50 #define LECID_MAX 0xfeff
51
52 typedef struct {
53   unsigned char addr[20];
54 } AtmAddr_t;
55 #define ATM_ADDR_LEN (sizeof(AtmAddr_t))
56
57 typedef struct lanedest_l {
58   LaneDestination_t *addr;
59   struct lanedest_l *next;
60 } LaneDestList_t;
61
62 typedef struct {
63   LaneVcc_t *pvc;
64   AtmAddr_t *address;
65   LecId_t lecid;
66   LaneDestList_t *destinations;
67 } InitPvc_t;
68
69 typedef struct {
70   unsigned marker : 16;
71   unsigned protocol : 8;
72   unsigned version : 8;
73   unsigned opcode : 16;
74   unsigned status : 16;
75   unsigned transaction_id : 32;
76   LecId_t lecid;
77   unsigned flags : 16;
78   LaneDestination_t source;
79   LaneDestination_t target;
80   AtmAddr_t source_addr;
81   unsigned lan_type : 8;
82   unsigned max_frame : 8;
83   unsigned reserved : 8;
84   unsigned elan_name_size : 8;
85   AtmAddr_t target_addr;
86   char elan_name[32];
87 } LaneControl_t;
88
89 typedef struct {
90   unsigned marker : 16;
91   unsigned protocol : 8;
92   unsigned version : 8;
93   unsigned opcode : 16;
94 } LaneVccReady_t;
95
96 /* Global function prototypes */
97
98 /* Global data */
99 #define LE_MARKER 0xff00
100 #define LE_PROTOCOL 0x01
101 #define LE_VERSION 0x01
102
103 /* Opcodes */
104 #define LE_CONFIGURE_REQUEST 0x0001
105 #define LE_CONFIGURE_RESPONSE 0x0101
106 #define LE_JOIN_REQUEST 0x0002
107 #define LE_JOIN_RESPONSE 0x0102
108 #define READY_QUERY 0x0003
109 #define READY_IND 0x0103
110 #define LE_REGISTER_REQUEST 0x0004
111 #define LE_REGISTER_RESPONSE 0x0104
112 #define LE_UNREGISTER_REQUEST 0x0005
113 #define LE_UNREGISTER_RESPONSE 0x0105
114 #define LE_ARP_REQUEST 0x0006
115 #define LE_ARP_RESPONSE 0x0106
116 #define LE_FLUSH_REQUEST 0x0007
117 #define LE_FLUSH_RESPONSE 0x0107
118 #define LE_NARP_REQUEST 0x0008
119 #define LE_TOPOLOGY_REQUEST 0x0009
120
121 /* Status codes */
122 #define LE_STATUS_SUCCESS 0             /* Success */
123 #define LE_STATUS_BAD_VERSION 1         /* Version not supported */
124 #define LE_STATUS_BAD_REQ 2             /* Invalid request parameters */
125 #define LE_STATUS_DUPLICATE_REG 4       /* Duplicate LAN registration */
126 #define LE_STATUS_DUPLICATE_ADDR 5      /* Duplicate ATM address */
127 #define LE_STATUS_NO_RESOURCES 6        /* Insufficient resources */
128 #define LE_STATUS_NO_ACCESS 7           /* Access denied */
129 #define LE_STATUS_BAD_LECID 8           /* Invalid requestor-id */
130 #define LE_STATUS_BAD_DEST 9            /* Invalid LAN destination */
131 #define LE_STATUS_BAD_ADDR 10           /* Invalid ATM address */
132 #define LE_STATUS_NO_CONFIG 20          /* No configuration */
133 #define LE_STATUS_CONFIG_ERROR 21       /* LE_CONFIGURE error */
134 #define LE_STATUS_NO_INFO 22            /* Insufficient Information */
135 #define LE_STATUS_MAX 22        
136
137 /* Flags */
138 #define LE_FLAG_REMOTE 0x0001
139 #define LE_FLAG_PROXY 0x0080
140 #define LE_FLAG_TOPOLOGY_CHANGE 0x0100
141
142 /* Lan types */
143 #define LE_LAN_TYPE_UNSPECIFIED 0x00
144 #define LE_LAN_TYPE_802_3 0x01
145 #define LE_LAN_TYPE_802_5 0x02
146
147 /* Max frame sizes, mtus */
148 #define LE_MAX_FRAME_UNSPECIFIED 0x00
149 #define LE_MAX_FRAME_1516 0x01
150 #define LE_MAX_FRAME_4544 0x02
151 #define LE_MAX_FRAME_9234 0x03
152 #define LE_MAX_FRAME_18190 0x04
153
154 extern const Unit_t main_unit;
155
156 #endif
157