18ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* atm.h - Functions useful for ATM applications */
28ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
38ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */
48ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
58ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
68ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#ifndef _ATM_H
78ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define _ATM_H
88ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
98ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#include <stdint.h>
108ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#include <sys/socket.h>
118ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#include <linux/atm.h>
128ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
138ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
148ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/*
158ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * For versions of glibc < 2.1
168ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */
178ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
188ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#ifndef AF_ATMPVC
198ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define AF_ATMPVC	8
208ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#endif
218ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
228ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#ifndef AF_ATMSVC
238ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define AF_ATMSVC	20
248ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#endif
258ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
268ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#ifndef PF_ATMPVC
278ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define PF_ATMPVC	AF_ATMPVC
288ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#endif
298ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
308ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#ifndef PF_ATMSVC
318ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define PF_ATMSVC	AF_ATMSVC
328ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#endif
338ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
348ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#ifndef SOL_ATM
358ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define SOL_ATM		264
368ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#endif
378ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
388ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#ifndef SOL_AAL
398ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define SOL_AAL		265
408ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#endif
418ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
428ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
438ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define HOSTS_ATM "/etc/hosts.atm"
448ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
458ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* text2atm flags */
468ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define T2A_PVC		  1	/* address is PVC */
478ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define T2A_SVC		  2	/* address is SVC */
488ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define T2A_UNSPEC	  4	/* allow unspecified parts in PVC address */
498ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define T2A_WILDCARD	  8	/* allow wildcards in PVC or SVC address */
508ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define T2A_NNI		 16	/* allow NNI VPI range (PVC) */
518ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define T2A_NAME	 32	/* allow name resolution */
528ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define T2A_REMOTE	 64	/* OBSOLETE */
538ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define T2A_LOCAL	128	/* don't use ANS */
548ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
558ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* atm2text flags */
568ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define A2T_PRETTY	 1	/* add syntactic sugar */
578ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define A2T_NAME	 2	/* attempt name lookup */
588ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define A2T_REMOTE	 4	/* OBSOLETE */
598ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define A2T_LOCAL	 8	/* don't use ANS */
608ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
618ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* atm_equal flags */
628ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define AXE_WILDCARD	 1	/* allow wildcard match */
638ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define AXE_PRVOPT	 2	/* private part of SVC address is optional */
648ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
658ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* text2qos flags */
668ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define T2Q_DEFAULTS	 1	/* structure contains default values */
678ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
688ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* text2sap flags */
698ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define T2S_NAME	 1	/* attempt name lookup */
708ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define T2S_LOCAL	 2	/* we may support NIS or such in the future */
718ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
728ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* sap2text flags */
738ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define S2T_NAME	 1	/* attempt name lookup */
748ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define S2T_LOCAL	 2	/* we may support NIS or such in the future */
758ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
768ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* sap_equal flags */
778ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define SXE_COMPATIBLE	 1	/* check for compatibility instead of identity*/
788ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define SXE_NEGOTIATION	 2	/* allow negotiation; requires SXE_COMPATIBLE;
798ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project				   assumes "a" defines the available
808ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project				   capabilities */
818ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define SXE_RESULT	 4	/* return selected SAP */
828ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
838ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define MAX_ATM_ADDR_LEN (2*ATM_ESA_LEN+ATM_E164_LEN+5)
848ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project				/* 4 dots, 1 plus */
858ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define MAX_ATM_NAME_LEN 256	/* wild guess */
868ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define MAX_ATM_QOS_LEN 116	/* 5+4+2*(3+3*(7+9)+2)+1 */
878ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define MAX_ATM_SAP_LEN	255	/* BHLI(27)+1+3*BLLI(L2=33,L3=41,+1)+2 */
888ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
898ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
908ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint text2atm(const char *text,struct sockaddr *addr,int length,int flags);
918ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint atm2text(char *buffer,int length,const struct sockaddr *addr,int flags);
928ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint atm_equal(const struct sockaddr *a,const struct sockaddr *b,int len,
938ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project  int flags);
948ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
958ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint sdu2cell(int s,int sizes,const int *sdu_size,int *num_sdu);
968ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
978ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint text2qos(const char *text,struct atm_qos *qos,int flags);
988ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint qos2text(char *buffer,int length,const struct atm_qos *qos,int flags);
998ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint qos_equal(const struct atm_qos *a,const struct atm_qos *b);
1008ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
1018ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint text2sap(const char *text,struct atm_sap *sap,int flags);
1028ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint sap2text(char *buffer,int length,const struct atm_sap *sap,int flags);
1038ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint sap_equal(const struct atm_sap *a,const struct atm_sap *b,int flags,...);
1048ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
1058ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint __t2q_get_rate(const char **text,int up);
1068ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint __atmlib_fetch(const char **pos,...); /* internal use only */
1078ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
1088ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#endif
109