OSDN Git Service

auto import from //depot/cupcake/@135843
[android-x86/external-ppp.git] / pppd / plugins / pppoatm / atm.h
1 /* atm.h - Functions useful for ATM applications */
2  
3 /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */
4  
5
6 #ifndef _ATM_H
7 #define _ATM_H
8
9 #include <stdint.h>
10 #include <sys/socket.h>
11 #include <linux/atm.h>
12
13
14 /*
15  * For versions of glibc < 2.1
16  */
17
18 #ifndef AF_ATMPVC
19 #define AF_ATMPVC       8
20 #endif
21
22 #ifndef AF_ATMSVC
23 #define AF_ATMSVC       20
24 #endif
25
26 #ifndef PF_ATMPVC
27 #define PF_ATMPVC       AF_ATMPVC
28 #endif
29
30 #ifndef PF_ATMSVC
31 #define PF_ATMSVC       AF_ATMSVC
32 #endif
33
34 #ifndef SOL_ATM
35 #define SOL_ATM         264
36 #endif
37
38 #ifndef SOL_AAL
39 #define SOL_AAL         265
40 #endif
41
42
43 #define HOSTS_ATM "/etc/hosts.atm"
44
45 /* text2atm flags */
46 #define T2A_PVC           1     /* address is PVC */
47 #define T2A_SVC           2     /* address is SVC */
48 #define T2A_UNSPEC        4     /* allow unspecified parts in PVC address */
49 #define T2A_WILDCARD      8     /* allow wildcards in PVC or SVC address */
50 #define T2A_NNI          16     /* allow NNI VPI range (PVC) */
51 #define T2A_NAME         32     /* allow name resolution */
52 #define T2A_REMOTE       64     /* OBSOLETE */
53 #define T2A_LOCAL       128     /* don't use ANS */
54
55 /* atm2text flags */
56 #define A2T_PRETTY       1      /* add syntactic sugar */
57 #define A2T_NAME         2      /* attempt name lookup */
58 #define A2T_REMOTE       4      /* OBSOLETE */
59 #define A2T_LOCAL        8      /* don't use ANS */
60
61 /* atm_equal flags */
62 #define AXE_WILDCARD     1      /* allow wildcard match */
63 #define AXE_PRVOPT       2      /* private part of SVC address is optional */
64
65 /* text2qos flags */
66 #define T2Q_DEFAULTS     1      /* structure contains default values */
67
68 /* text2sap flags */
69 #define T2S_NAME         1      /* attempt name lookup */
70 #define T2S_LOCAL        2      /* we may support NIS or such in the future */
71
72 /* sap2text flags */
73 #define S2T_NAME         1      /* attempt name lookup */
74 #define S2T_LOCAL        2      /* we may support NIS or such in the future */
75
76 /* sap_equal flags */
77 #define SXE_COMPATIBLE   1      /* check for compatibility instead of identity*/
78 #define SXE_NEGOTIATION  2      /* allow negotiation; requires SXE_COMPATIBLE;
79                                    assumes "a" defines the available
80                                    capabilities */
81 #define SXE_RESULT       4      /* return selected SAP */
82
83 #define MAX_ATM_ADDR_LEN (2*ATM_ESA_LEN+ATM_E164_LEN+5)
84                                 /* 4 dots, 1 plus */
85 #define MAX_ATM_NAME_LEN 256    /* wild guess */
86 #define MAX_ATM_QOS_LEN 116     /* 5+4+2*(3+3*(7+9)+2)+1 */
87 #define MAX_ATM_SAP_LEN 255     /* BHLI(27)+1+3*BLLI(L2=33,L3=41,+1)+2 */
88
89
90 int text2atm(const char *text,struct sockaddr *addr,int length,int flags);
91 int atm2text(char *buffer,int length,const struct sockaddr *addr,int flags);
92 int atm_equal(const struct sockaddr *a,const struct sockaddr *b,int len,
93   int flags);
94
95 int sdu2cell(int s,int sizes,const int *sdu_size,int *num_sdu);
96
97 int text2qos(const char *text,struct atm_qos *qos,int flags);
98 int qos2text(char *buffer,int length,const struct atm_qos *qos,int flags);
99 int qos_equal(const struct atm_qos *a,const struct atm_qos *b);
100
101 int text2sap(const char *text,struct atm_sap *sap,int flags);
102 int sap2text(char *buffer,int length,const struct atm_sap *sap,int flags);
103 int sap_equal(const struct atm_sap *a,const struct atm_sap *b,int flags,...);
104
105 int __t2q_get_rate(const char **text,int up);
106 int __atmlib_fetch(const char **pos,...); /* internal use only */
107
108 #endif