|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T i
Length: 6636 (0x19ec)
Types: TextFile
Names: »isoaddrs.h«
└─⟦3d0c2be1b⟧ Bits:30001254 ISODE-5.0 Tape
└─⟦eba4602b1⟧ »./isode-5.0.tar.Z«
└─⟦d3ac74d73⟧
└─⟦this⟧ »isode-5.0/h/isoaddrs.h«
/* isoaddrs.h - ISODE addressing */
/*
* $Header: /f/osi/h/RCS/isoaddrs.h,v 6.0 89/03/18 23:32:06 mrose Rel $
*
*
* $Log: isoaddrs.h,v $
* Revision 6.0 89/03/18 23:32:06 mrose
* Release 5.0
*
*/
/*
* NOTICE
*
* Acquisition, use, and distribution of this module and related
* materials are subject to the restrictions of a license agreement.
* Consult the Preface in the User's Manual for the full terms of
* this agreement.
*
*/
#ifndef _ISOADDRS_
#define _ISOADDRS_
#ifndef _MANIFEST_
#include "manifest.h"
#endif
#ifndef _GENERAL_
#include "general.h"
#endif
/* \f
*/
#ifdef NULLPE
typedef struct AEInfo { /* "real" directory services! */
PE aei_ap_title;
PE aei_ae_qualifier;
int aei_ap_id;
int aei_ae_id;
int aei_flags;
#define AEI_NULL 0x00
#define AEI_AP_ID 0x01
#define AEI_AE_ID 0x02
} AEInfo, *AEI;
#define NULLAEI ((AEI) 0)
#define AEIFREE(aei) { \
if ((aei) -> aei_ap_title) \
pe_free ((aei) -> aei_ap_title), \
(aei) -> aei_ap_title = NULLPE; \
if ((aei) -> aei_ae_qualifier) \
pe_free ((aei) -> aei_ae_qualifier), \
(aei) -> aei_ae_qualifier = NULLPE; \
}
AEI str2aei ();
char *sprintaei ();
#endif
/* \f
*/
struct NSAPaddr {
long na_type; /* this structure shouldn't have holes in it */
#define NA_NSAP 0
#define NA_TCP 1
#define NA_X25 2
#define NA_BRG 3
/* An interim approach to use of Network Addresses... */
#define INTERIM_IDP "5400728722"
#define SUBNET_REALNS (-1)
#define SUBNET_INTL_X25 1
#define SUBNET_JANET 2
#define SUBNET_INTERNET 3
#define SUBNET_MAX 4 /* number of subnets */
long na_subnet; /* prefix for Interim NSAPaddrs */
union {
struct na_nsap { /* real network service */
#define NASIZE 64 /* 20 ought to do it */
char na_nsap_address[NASIZE];
char na_nsap_addrlen;
} un_na_nsap;
struct na_tcp { /* emulation via RFC1006 */
#define NSAP_DOMAINLEN 63
char na_tcp_domain[NSAP_DOMAINLEN + 1];
u_short na_tcp_port; /* non-standard TCP port */
u_short na_tcp_tset; /* transport set */
#define NA_TSET_TCP 0x0001 /* .. TCP */
#define NA_TSET_UDP 0x0002 /* .. UDP */
} un_na_tcp;
struct na_x25 { /* X.25 (assume single subnet) */
#define NSAP_DTELEN 36
char na_x25_dte[NSAP_DTELEN + 1]; /* Numeric DTE + Link */
char na_x25_dtelen; /* number of digits used */
/* Conventionally, the PID sits at the first head bytes of user data and so
* should probably not be mentioned specially. A macro might do it, if
* necessary.
*/
#define NPSIZE 4
char na_x25_pid[NPSIZE]; /* X.25 protocol id */
char na_x25_pidlen; /* .. */
#define CUDFSIZE 16
char na_x25_cudf[CUDFSIZE];/* call user data field */
char na_x25_cudflen; /* .. */
/*
* X25 Facilities field.
*/
#define FACSIZE 6
char na_x25_fac[FACSIZE]; /* X.25 facilities */
char na_x25_faclen; /* .. */
} un_na_x25;
} na_un;
#define na_address na_un.un_na_nsap.na_nsap_address
#define na_addrlen na_un.un_na_nsap.na_nsap_addrlen
#define na_domain na_un.un_na_tcp.na_tcp_domain
#define na_port na_un.un_na_tcp.na_tcp_port
#define na_tset na_un.un_na_tcp.na_tcp_tset
#define na_dte na_un.un_na_x25.na_x25_dte
#define na_dtelen na_un.un_na_x25.na_x25_dtelen
#define na_pid na_un.un_na_x25.na_x25_pid
#define na_pidlen na_un.un_na_x25.na_x25_pidlen
#define na_cudf na_un.un_na_x25.na_x25_cudf
#define na_cudflen na_un.un_na_x25.na_x25_cudflen
#define na_fac na_un.un_na_x25.na_x25_fac
#define na_faclen na_un.un_na_x25.na_x25_faclen
};
#define NULLNA ((struct NSAPaddr *) 0)
struct TSAPaddr {
#define NTADDR 4
struct NSAPaddr ta_addrs[NTADDR]; /* choice of network addresses */
int ta_naddr;
#define TSSIZE 64
int ta_selectlen;
union { /* TSAP selector */
char ta_un_selector[TSSIZE];
u_short ta_un_port;
} un_ta;
#define ta_selector un_ta.ta_un_selector
#define ta_port un_ta.ta_un_port
};
#define NULLTA ((struct TSAPaddr *) 0)
struct SSAPaddr {
struct TSAPaddr sa_addr; /* transport address */
#define SSSIZE 64
int sa_selectlen;
union { /* SSAP selector */
char sa_un_selector[SSSIZE];
u_short sa_un_port;
} un_sa;
#define sa_selector un_sa.sa_un_selector
#define sa_port un_sa.sa_un_port
};
#define NULLSA ((struct SSAPaddr *) 0)
struct PSAPaddr {
struct SSAPaddr pa_addr; /* session address */
#define PSSIZE 64
int pa_selectlen;
union { /* PSAP selector */
char pa_un_selector[PSSIZE];
u_short pa_un_port;
} un_pa;
#define pa_selector un_pa.pa_un_selector
#define pa_port un_pa.pa_un_port
};
#define NULLPA ((struct PSAPaddr *) 0)
struct PSAPaddr *aei2addr (); /* application entity title to PSAPaddr */
/* \f
*/
#ifdef NULLPE
struct ns_query {
int ns_id;
char *ns_name;
char *ns_attribute;
};
struct ns_response {
int ns_id;
PE ns_name;
PE ns_value;
};
char *alias2name ();
PE name2value ();
extern PE (*acsap_lookup) ();
#endif
#ifdef NULLOID
struct isoentity { /* for stub directory service */
OIDentifier ie_identifier;
char *ie_descriptor;
struct PSAPaddr ie_addr;
};
int setisoentity (), endisoentity ();
struct isoentity *getisoentity ();
AEI oid2aei ();
#endif
/* old-style */
struct PSAPaddr *is2paddr (); /* service entry to PSAPaddr */
struct SSAPaddr *is2saddr (); /* service entry to SSAPaddr */
struct TSAPaddr *is2taddr (); /* service entry to TSAPaddr */
/* \f
*/
struct PSAPaddr *str2paddr (); /* string encoding to PSAPaddr */
struct SSAPaddr *str2saddr (); /* string encoding to SSAPaddr */
struct TSAPaddr *str2taddr (); /* string encoding to TSAPaddr */
#define paddr2str(pa,na) _paddr2str ((pa), (na), 0)
char *_paddr2str (); /* PSAPaddr to string encoding */
char *saddr2str (); /* SSAPaddr to string encoding */
char *taddr2str (); /* TSAPaddr to string encoding */
struct NSAPaddr *na2norm (); /* normalize NSAPaddr */
char *na2str (); /* pretty-print NSAPaddr */
/* \f
*/
int isodeserver (); /* generic server dispatch */
/* \f
*/
/* all of this really should be in "isoqos.h" ... */
struct QOStype {
/* transport QOS */
int qos_reliability; /* "reliability" element */
#define HIGH_QUALITY 0
#define LOW_QUALITY 1
/* session QOS */
int qos_sversion; /* session version required */
int qos_extended; /* extended control */
};
#define NULLQOS ((struct QOStype *) 0)
#endif