/* 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