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
109