0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef _UAPI_LINUX_ATM_H
0013 #define _UAPI_LINUX_ATM_H
0014
0015
0016
0017
0018
0019
0020 #include <linux/compiler.h>
0021 #include <linux/atmapi.h>
0022 #include <linux/atmsap.h>
0023 #include <linux/atmioc.h>
0024 #include <linux/types.h>
0025
0026
0027
0028 #define ATM_CELL_SIZE 53
0029 #define ATM_CELL_PAYLOAD 48
0030 #define ATM_AAL0_SDU 52
0031 #define ATM_MAX_AAL34_PDU 65535
0032 #define ATM_AAL5_TRAILER 8
0033 #define ATM_MAX_AAL5_PDU 65535
0034 #define ATM_MAX_CDV 9999
0035 #define ATM_NOT_RSV_VCI 32
0036
0037 #define ATM_MAX_VPI 255
0038 #define ATM_MAX_VPI_NNI 4096
0039 #define ATM_MAX_VCI 65535
0040
0041
0042
0043 #define ATM_NO_AAL 0
0044 #define ATM_AAL0 13
0045 #define ATM_AAL1 1
0046 #define ATM_AAL2 2
0047 #define ATM_AAL34 3
0048 #define ATM_AAL5 5
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058 #define __SO_ENCODE(l,n,t) ((((l) & 0x1FF) << 22) | ((n) << 16) | \
0059 sizeof(t))
0060 #define __SO_LEVEL_MATCH(c,m) (((c) >> 22) == ((m) & 0x1FF))
0061 #define __SO_NUMBER(c) (((c) >> 16) & 0x3f)
0062 #define __SO_SIZE(c) ((c) & 0x3fff)
0063
0064
0065
0066
0067
0068 #define SO_SETCLP __SO_ENCODE(SOL_ATM,0,int)
0069
0070 #define SO_CIRANGE __SO_ENCODE(SOL_ATM,1,struct atm_cirange)
0071
0072
0073 #define SO_ATMQOS __SO_ENCODE(SOL_ATM,2,struct atm_qos)
0074
0075 #define SO_ATMSAP __SO_ENCODE(SOL_ATM,3,struct atm_sap)
0076
0077 #define SO_ATMPVC __SO_ENCODE(SOL_ATM,4,struct sockaddr_atmpvc)
0078
0079 #define SO_MULTIPOINT __SO_ENCODE(SOL_ATM, 5, int)
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094 #define ATM_HDR_GFC_MASK 0xf0000000
0095 #define ATM_HDR_GFC_SHIFT 28
0096 #define ATM_HDR_VPI_MASK 0x0ff00000
0097 #define ATM_HDR_VPI_SHIFT 20
0098 #define ATM_HDR_VCI_MASK 0x000ffff0
0099 #define ATM_HDR_VCI_SHIFT 4
0100 #define ATM_HDR_PTI_MASK 0x0000000e
0101 #define ATM_HDR_PTI_SHIFT 1
0102 #define ATM_HDR_CLP 0x00000001
0103
0104
0105
0106
0107
0108
0109 #define ATM_PTI_US0 0
0110 #define ATM_PTI_US1 1
0111 #define ATM_PTI_UCES0 2
0112 #define ATM_PTI_UCES1 3
0113 #define ATM_PTI_SEGF5 4
0114 #define ATM_PTI_E2EF5 5
0115 #define ATM_PTI_RSV_RM 6
0116 #define ATM_PTI_RSV 7
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127 #define ATM_NONE 0
0128 #define ATM_UBR 1
0129 #define ATM_CBR 2
0130 #define ATM_VBR 3
0131 #define ATM_ABR 4
0132 #define ATM_ANYCLASS 5
0133
0134 #define ATM_MAX_PCR -1
0135
0136 struct atm_trafprm {
0137 unsigned char traffic_class;
0138 int max_pcr;
0139 int pcr;
0140 int min_pcr;
0141 int max_cdv;
0142 int max_sdu;
0143
0144 unsigned int icr;
0145 unsigned int tbe;
0146 unsigned int frtt : 24;
0147 unsigned int rif : 4;
0148 unsigned int rdf : 4;
0149 unsigned int nrm_pres :1;
0150 unsigned int trm_pres :1;
0151 unsigned int adtf_pres :1;
0152 unsigned int cdf_pres :1;
0153 unsigned int nrm :3;
0154 unsigned int trm :3;
0155 unsigned int adtf :10;
0156 unsigned int cdf :3;
0157 unsigned int spare :9;
0158 };
0159
0160 struct atm_qos {
0161 struct atm_trafprm txtp;
0162 struct atm_trafprm rxtp __ATM_API_ALIGN;
0163
0164 unsigned char aal __ATM_API_ALIGN;
0165 };
0166
0167
0168
0169 #define ATM_ITF_ANY -1
0170 #define ATM_VPI_ANY -1
0171 #define ATM_VCI_ANY -1
0172 #define ATM_VPI_UNSPEC -2
0173 #define ATM_VCI_UNSPEC -2
0174
0175
0176 struct sockaddr_atmpvc {
0177 unsigned short sap_family;
0178 struct {
0179 short itf;
0180 short vpi;
0181 int vci;
0182 } sap_addr __ATM_API_ALIGN;
0183 };
0184
0185
0186
0187 #define ATM_ESA_LEN 20
0188 #define ATM_E164_LEN 12
0189
0190 #define ATM_AFI_DCC 0x39
0191 #define ATM_AFI_ICD 0x47
0192 #define ATM_AFI_E164 0x45
0193 #define ATM_AFI_LOCAL 0x49
0194
0195 #define ATM_AFI_DCC_GROUP 0xBD
0196 #define ATM_AFI_ICD_GROUP 0xC5
0197 #define ATM_AFI_E164_GROUP 0xC3
0198 #define ATM_AFI_LOCAL_GROUP 0xC7
0199
0200 #define ATM_LIJ_NONE 0
0201 #define ATM_LIJ 1
0202 #define ATM_LIJ_RPJ 2
0203 #define ATM_LIJ_NJ 3
0204
0205
0206 struct sockaddr_atmsvc {
0207 unsigned short sas_family;
0208 struct {
0209 unsigned char prv[ATM_ESA_LEN];
0210 char pub[ATM_E164_LEN+1];
0211
0212 char lij_type;
0213 __u32 lij_id;
0214 } sas_addr __ATM_API_ALIGN;
0215 };
0216
0217
0218 static __inline__ int atmsvc_addr_in_use(struct sockaddr_atmsvc addr)
0219 {
0220 return *addr.sas_addr.prv || *addr.sas_addr.pub;
0221 }
0222
0223
0224 static __inline__ int atmpvc_addr_in_use(struct sockaddr_atmpvc addr)
0225 {
0226 return addr.sap_addr.itf || addr.sap_addr.vpi || addr.sap_addr.vci;
0227 }
0228
0229
0230
0231
0232
0233
0234 struct atmif_sioc {
0235 int number;
0236 int length;
0237 void __user *arg;
0238 };
0239
0240
0241 typedef unsigned short atm_backend_t;
0242 #endif