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