| /* atm.h - Functions useful for ATM applications */ |
| |
| /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ |
| |
| |
| #ifndef _ATM_H |
| #define _ATM_H |
| |
| #include <stdint.h> |
| #include <sys/socket.h> |
| #include <linux/atm.h> |
| |
| |
| /* |
| * For versions of glibc < 2.1 |
| */ |
| |
| #ifndef AF_ATMPVC |
| #define AF_ATMPVC 8 |
| #endif |
| |
| #ifndef AF_ATMSVC |
| #define AF_ATMSVC 20 |
| #endif |
| |
| #ifndef PF_ATMPVC |
| #define PF_ATMPVC AF_ATMPVC |
| #endif |
| |
| #ifndef PF_ATMSVC |
| #define PF_ATMSVC AF_ATMSVC |
| #endif |
| |
| #ifndef SOL_ATM |
| #define SOL_ATM 264 |
| #endif |
| |
| #ifndef SOL_AAL |
| #define SOL_AAL 265 |
| #endif |
| |
| |
| #define HOSTS_ATM "/etc/hosts.atm" |
| |
| /* text2atm flags */ |
| #define T2A_PVC 1 /* address is PVC */ |
| #define T2A_SVC 2 /* address is SVC */ |
| #define T2A_UNSPEC 4 /* allow unspecified parts in PVC address */ |
| #define T2A_WILDCARD 8 /* allow wildcards in PVC or SVC address */ |
| #define T2A_NNI 16 /* allow NNI VPI range (PVC) */ |
| #define T2A_NAME 32 /* allow name resolution */ |
| #define T2A_REMOTE 64 /* OBSOLETE */ |
| #define T2A_LOCAL 128 /* don't use ANS */ |
| |
| /* atm2text flags */ |
| #define A2T_PRETTY 1 /* add syntactic sugar */ |
| #define A2T_NAME 2 /* attempt name lookup */ |
| #define A2T_REMOTE 4 /* OBSOLETE */ |
| #define A2T_LOCAL 8 /* don't use ANS */ |
| |
| /* atm_equal flags */ |
| #define AXE_WILDCARD 1 /* allow wildcard match */ |
| #define AXE_PRVOPT 2 /* private part of SVC address is optional */ |
| |
| /* text2qos flags */ |
| #define T2Q_DEFAULTS 1 /* structure contains default values */ |
| |
| /* text2sap flags */ |
| #define T2S_NAME 1 /* attempt name lookup */ |
| #define T2S_LOCAL 2 /* we may support NIS or such in the future */ |
| |
| /* sap2text flags */ |
| #define S2T_NAME 1 /* attempt name lookup */ |
| #define S2T_LOCAL 2 /* we may support NIS or such in the future */ |
| |
| /* sap_equal flags */ |
| #define SXE_COMPATIBLE 1 /* check for compatibility instead of identity*/ |
| #define SXE_NEGOTIATION 2 /* allow negotiation; requires SXE_COMPATIBLE; |
| assumes "a" defines the available |
| capabilities */ |
| #define SXE_RESULT 4 /* return selected SAP */ |
| |
| #define MAX_ATM_ADDR_LEN (2*ATM_ESA_LEN+ATM_E164_LEN+5) |
| /* 4 dots, 1 plus */ |
| #define MAX_ATM_NAME_LEN 256 /* wild guess */ |
| #define MAX_ATM_QOS_LEN 116 /* 5+4+2*(3+3*(7+9)+2)+1 */ |
| #define MAX_ATM_SAP_LEN 255 /* BHLI(27)+1+3*BLLI(L2=33,L3=41,+1)+2 */ |
| |
| |
| int text2atm(const char *text,struct sockaddr *addr,int length,int flags); |
| int atm2text(char *buffer,int length,const struct sockaddr *addr,int flags); |
| int atm_equal(const struct sockaddr *a,const struct sockaddr *b,int len, |
| int flags); |
| |
| int sdu2cell(int s,int sizes,const int *sdu_size,int *num_sdu); |
| |
| int text2qos(const char *text,struct atm_qos *qos,int flags); |
| int qos2text(char *buffer,int length,const struct atm_qos *qos,int flags); |
| int qos_equal(const struct atm_qos *a,const struct atm_qos *b); |
| |
| int text2sap(const char *text,struct atm_sap *sap,int flags); |
| int sap2text(char *buffer,int length,const struct atm_sap *sap,int flags); |
| int sap_equal(const struct atm_sap *a,const struct atm_sap *b,int flags,...); |
| |
| int __t2q_get_rate(const char **text,int up); |
| int __atmlib_fetch(const char **pos,...); /* internal use only */ |
| |
| #endif |