Home | History | Annotate | Download | only in pppoatm
      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