atm.h
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011: #ifndef _LINUX_ATM_H
012: #define _LINUX_ATM_H
013:
014:
015:
016:
017:
018:
019:
020: #include <linux/atmapi.h>
021: #include <linux/atmsap.h>
022: #include <linux/atmioc.h>
023: #include <linux/types.h>
024:
025:
026:
027: #define ATM_CELL_SIZE 53
028: #define ATM_CELL_PAYLOAD 48
029: #define ATM_AAL0_SDU 52
030: #define ATM_MAX_AAL34_PDU 65535
031: #define ATM_AAL5_TRAILER 8
032: #define ATM_MAX_AAL5_PDU 65535
033: #define ATM_MAX_CDV 9999
034: #define ATM_NOT_RSV_VCI 32
035:
036: #define ATM_MAX_VPI 255
037: #define ATM_MAX_VPI_NNI 4096
038: #define ATM_MAX_VCI 65535
039:
040:
041:
042: #define ATM_NO_AAL 0
043: #define ATM_AAL0 13
044: #define ATM_AAL1 1
045: #define ATM_AAL2 2
046: #define ATM_AAL34 3
047: #define ATM_AAL5 5
048:
049:
050:
051:
052:
053:
054:
055:
056:
057: #define __SO_ENCODE(l,n,t) ((((l) & 0x1FF) << 22) | ((n) << 16) | \
058: sizeof(t))
059: #define __SO_LEVEL_MATCH(c,m) (((c) >> 22) == ((m) & 0x1FF))
060: #define __SO_NUMBER(c) (((c) >> 16) & 0x3f)
061: #define __SO_SIZE(c) ((c) & 0x3fff)
062:
063:
064:
065:
066:
067: #define SO_SETCLP __SO_ENCODE(SOL_ATM,0,int)
068: TODO
069: #define SO_CIRANGE __SO_ENCODE(SOL_ATM,1,struct atm_cirange)
070:
071:
072: #define SO_ATMQOS __SO_ENCODE(SOL_ATM,2,struct atm_qos)
073:
074: #define SO_ATMSAP __SO_ENCODE(SOL_ATM,3,struct atm_sap)
075:
076: #define SO_ATMPVC __SO_ENCODE(SOL_ATM,4,struct sockaddr_atmpvc)
077:
078: #define SO_MULTIPOINT __SO_ENCODE(SOL_ATM, 5, int)
079:
080:
081:
082:
083:
084:
085:
086:
087:
088:
089:
090:
091:
092:
093: #define ATM_HDR_GFC_MASK 0xf0000000
094: #define ATM_HDR_GFC_SHIFT 28
095: #define ATM_HDR_VPI_MASK 0x0ff00000
096: #define ATM_HDR_VPI_SHIFT 20
097: #define ATM_HDR_VCI_MASK 0x000ffff0
098: #define ATM_HDR_VCI_SHIFT 4
099: #define ATM_HDR_PTI_MASK 0x0000000e
100: #define ATM_HDR_PTI_SHIFT 1
101: #define ATM_HDR_CLP 0x00000001
102:
103:
104:
105:
106:
107:
108: #define ATM_PTI_US0 0
109: #define ATM_PTI_US1 1
110: #define ATM_PTI_UCES0 2
111: #define ATM_PTI_UCES1 3
112: #define ATM_PTI_SEGF5 4
113: #define ATM_PTI_E2EF5 5
114: #define ATM_PTI_RSV_RM 6
115: #define ATM_PTI_RSV 7
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126: #define ATM_NONE 0
127: #define ATM_UBR 1
128: #define ATM_CBR 2
129: #define ATM_VBR 3
130: #define ATM_ABR 4
131: #define ATM_ANYCLASS 5
132:
133: #define ATM_MAX_PCR -1
134:
135: struct atm_trafprm {
136: unsigned char traffic_class;
137: int max_pcr;
138: int pcr;
139: int min_pcr;
140: int max_cdv;
141: int max_sdu;
142:
143: unsigned int icr;
144: unsigned int tbe;
145: unsigned int frtt : 24;
146: unsigned int rif : 4;
147: unsigned int rdf : 4;
148: unsigned int nrm_pres :1;
149: unsigned int trm_pres :1;
150: unsigned int adtf_pres :1;
151: unsigned int cdf_pres :1;
152: unsigned int nrm :3;
153: unsigned int trm :3;
154: unsigned int adtf :10;
155: unsigned int cdf :3;
156: unsigned int spare :9;
157: };
158:
159: struct atm_qos {
160: struct atm_trafprm txtp;
161: struct atm_trafprm rxtp __ATM_API_ALIGN;
162:
163: unsigned char aal __ATM_API_ALIGN;
164: };
165:
166:
167:
168: #define ATM_ITF_ANY -1
169: #define ATM_VPI_ANY -1
170: #define ATM_VCI_ANY -1
171: #define ATM_VPI_UNSPEC -2
172: #define ATM_VCI_UNSPEC -2
173:
174:
175: struct sockaddr_atmpvc {
176: unsigned short sap_family;
177: struct {
178: short itf;
179: short vpi;
180: int vci;
181: } sap_addr __ATM_API_ALIGN;
182: };
183:
184:
185:
186: #define ATM_ESA_LEN 20
187: #define ATM_E164_LEN 12
188:
189: #define ATM_AFI_DCC 0x39
190: #define ATM_AFI_ICD 0x47
191: #define ATM_AFI_E164 0x45
192: #define ATM_AFI_LOCAL 0x49
193:
194: #define ATM_AFI_DCC_GROUP 0xBD
195: #define ATM_AFI_ICD_GROUP 0xC5
196: #define ATM_AFI_E164_GROUP 0xC3
197: #define ATM_AFI_LOCAL_GROUP 0xC7
198:
199: #define ATM_LIJ_NONE 0
200: #define ATM_LIJ 1
201: #define ATM_LIJ_RPJ 2
202: #define ATM_LIJ_NJ 3
203:
204:
205: struct sockaddr_atmsvc {
206: unsigned short sas_family;
207: struct {
208: unsigned char prv[ATM_ESA_LEN];
209: char pub[ATM_E164_LEN+1];
210:
211: char lij_type;
212: __u32 lij_id;
213: } sas_addr __ATM_API_ALIGN;
214: };
215:
216:
217: static __inline__ int atmsvc_addr_in_use(struct sockaddr_atmsvc addr)
218: {
219: return *addr.sas_addr.prv || *addr.sas_addr.pub;
220: }
221:
222:
223: static __inline__ int atmpvc_addr_in_use(struct sockaddr_atmpvc addr)
224: {
225: return addr.sap_addr.itf || addr.sap_addr.vpi || addr.sap_addr.vci;
226: }
227:
228:
229:
230:
231:
232:
233: struct atmif_sioc {
234: int number;
235: int length;
236: void *arg;
237: };
238:
239:
240: typedef unsigned short atm_backend_t;
241: #endif
242:
© Andrew Scott 2006 -
2025,
All Rights Reserved