|
|
1.1 ! root 1: -- sa-dec.py - Seleted Attributes ! 2: ! 3: -- $Header: /f/osi/dsap/x500as/RCS/sa-enc.py,v 7.0 89/11/23 21:50:51 mrose Rel $ ! 4: -- ! 5: -- ! 6: -- $Log: sa-enc.py,v $ ! 7: -- Revision 7.0 89/11/23 21:50:51 mrose ! 8: -- Release 6.0 ! 9: -- ! 10: ! 11: -- ! 12: -- NOTICE ! 13: -- ! 14: -- Acquisition, use, and distribution of this module and related ! 15: -- materials are subject to the restrictions of a license agreement. ! 16: -- Consult the Preface in the User's Manual for the full terms of ! 17: -- this agreement. ! 18: -- ! 19: -- ! 20: ! 21: ! 22: SA ! 23: { ! 24: joint-iso-ccitt ! 25: ds(5) ! 26: modules(1) ! 27: selectedAttributeTypes(5) ! 28: } ! 29: ! 30: DEFINITIONS ::= ! 31: ! 32: %{ ! 33: #include <stdio.h> ! 34: #include "quipu/util.h" ! 35: #include "quipu/entry.h" ! 36: ! 37: extern LLog * log_dsap; ! 38: ! 39: #define encode_UNIV_PrintableString build_UNIV_PrintableString ! 40: #define encode_UNIV_TeletexString build_UNIV_TeletexString ! 41: #define encode_UNIV_OctetString build_UNIV_OctetString ! 42: #define encode_UNIV_IA5String build_UNIV_IA5String ! 43: #define encode_UNIV_T61String build_UNIV_T61String ! 44: ! 45: %} ! 46: ! 47: PREFIXES encode decode print ! 48: ! 49: BEGIN ! 50: ! 51: IMPORTS ! 52: AttributeType ! 53: FROM IF ! 54: { ! 55: joint-iso-ccitt ! 56: ds(5) ! 57: modules(1) ! 58: informationFramework(1) ! 59: }; ! 60: ! 61: ENCODER encode ! 62: ! 63: FacsimileTelephoneNumber [[P struct fax *]] ! 64: %{ ! 65: char *bit_parm; ! 66: %} ! 67: ::= ! 68: %{ ! 69: DLOG(log_dsap, LLOG_PDUS, ("About to encode FacsimileTelephoneNumber")); ! 70: %} ! 71: SEQUENCE ! 72: { ! 73: telephoneNumber ! 74: PrintableString [[s parm->number]], ! 75: parameters ! 76: BIT STRING ! 77: [[x bit_parm = bitstr2strb (parm -> bits, &len) $ len]] ! 78: %{ ! 79: free (bit_parm); ! 80: %} ! 81: OPTIONAL <<parm -> bits>> ! 82: ! 83: } ! 84: %{ ! 85: DLOG(log_dsap, LLOG_PDUS, ("Done encode FacsimileTelephoneNumber")); ! 86: %} ! 87: ! 88: PostalAddress [[P struct postaddr *]] ! 89: %{ ! 90: struct postaddr * tmp; ! 91: %} ! 92: ::= ! 93: %{ ! 94: DLOG(log_dsap, LLOG_PDUS, ("About to encode PostalAddress")); ! 95: %} ! 96: SEQUENCE OF ! 97: <<tmp=parm; tmp != (struct postaddr *) NULL; tmp=tmp->pa_next>> ! 98: CHOICE << tmp->addrtype >> ! 99: { ! 100: T61String [[s tmp->addrcomp]], ! 101: PrintableString [[s tmp->addrcomp]] ! 102: } ! 103: ! 104: %{ ! 105: DLOG(log_dsap, LLOG_PDUS, ("Done encode PostalAddress")); ! 106: %} ! 107: ! 108: TelexNumber [[P struct telex *]] ! 109: ::= ! 110: %{ ! 111: DLOG(log_dsap, LLOG_PDUS, ("About to encode TelexNumber")); ! 112: %} ! 113: SEQUENCE ! 114: { ! 115: telexNumber PrintableString [[s parm->telexnumber]], ! 116: countryCode PrintableString [[s parm->countrycode]], ! 117: answerback PrintableString [[s parm->answerback]] ! 118: } ! 119: %{ ! 120: DLOG(log_dsap, LLOG_PDUS, ("Done encode TelexNumber")); ! 121: %} ! 122: ! 123: TeletexTerminalIdentifier [[P struct teletex *]] ! 124: ::= ! 125: %{ ! 126: DLOG(log_dsap, LLOG_PDUS, ("About to encode TeletexTerminalIdentifier")); ! 127: %} ! 128: SEQUENCE ! 129: { ! 130: teletexTerminal ! 131: PrintableString [[s parm->terminal]], ! 132: parameters ! 133: SET { ! 134: graphic-character-sets [0] TeletexString ! 135: [[s parm->graphic]] OPTIONAL <<parm->graphic != NULLCP>>, ! 136: control-character-sets [1] TeletexString ! 137: [[s parm->control]] OPTIONAL << parm->control != NULLCP>>, ! 138: page-formats [2] OCTET STRING ! 139: [[s parm->page]] OPTIONAL << parm->page != NULLCP >>, ! 140: miscellaneous-terminal-capabilities [3] TeletexString ! 141: [[s parm->misc]] OPTIONAL << parm->misc != NULLCP >>, ! 142: private-use [4] OCTET STRING ! 143: [[s parm->t_private]] OPTIONAL << parm->t_private != NULLCP >> ! 144: } OPTIONAL << (parm->graphic != NULLCP) || (parm->control != NULLCP) ! 145: || (parm->page != NULLCP) || (parm->misc != NULLCP) ! 146: || (parm->t_private != NULLCP) >> ! 147: } ! 148: %{ ! 149: DLOG(log_dsap, LLOG_PDUS, ("Done encode TeletexTerminalIdentifier")); ! 150: %} ! 151: ! 152: PreferredDeliveryMethod [[P struct pref_deliv *]] ! 153: %{ ! 154: struct pref_deliv * tmp; ! 155: %} ! 156: ::= ! 157: %{ ! 158: DLOG(log_dsap, LLOG_PDUS, ("About to encode PreferredDeliveryMethod")); ! 159: %} ! 160: SEQUENCE OF ! 161: <<tmp=parm; tmp != (struct pref_deliv *)NULL; tmp=tmp->pd_next>> ! 162: INTEGER [[i tmp->deliv ]] ! 163: { ! 164: any-delivery-method (0), ! 165: mhs-delivery (1), ! 166: physical-delivery (2), ! 167: telex-delivery (3), ! 168: teletex-delivery (4), ! 169: g3-facsimilie-delivery (5), ! 170: g4-facsimilie-delivery (6), ! 171: ia5-terminal-delivery (7), ! 172: videotex-delivery (8), ! 173: telephone-delivery (9) ! 174: } ! 175: %{ ! 176: DLOG(log_dsap, LLOG_PDUS, ("Done encode PreferredDeliveryMethod")); ! 177: %} ! 178: ! 179: CriteriaItem [[P struct CriteriaItem *]] ! 180: ::= ! 181: CHOICE <<parm -> offset>> { ! 182: equality[0] ! 183: AttributeType ! 184: [[p parm -> attrib ]], ! 185: ! 186: substrings[1] ! 187: AttributeType ! 188: [[p parm -> attrib ]], ! 189: ! 190: greaterOrEqual[2] ! 191: AttributeType ! 192: [[p parm -> attrib ]], ! 193: ! 194: lessOrEqual[3] ! 195: AttributeType ! 196: [[p parm -> attrib ]], ! 197: ! 198: approximateMatch[4] ! 199: AttributeType ! 200: [[p parm -> attrib ]] ! 201: ! 202: } ! 203: ! 204: ! 205: Criteria [[P struct Criteria *]] ! 206: %{ ! 207: struct and_or_set *and_or_set; ! 208: %} ! 209: ::= ! 210: CHOICE ! 211: %{ ! 212: and_or_set = parm -> un.and_or; ! 213: %} ! 214: <<parm -> offset>> ! 215: { ! 216: type[0] ! 217: CriteriaItem ! 218: [[p parm -> un.type ]], ! 219: ! 220: and[1] ! 221: SET OF ! 222: <<and_or_set = parm -> un.and_or; ! 223: and_or_set; ! 224: and_or_set = and_or_set -> and_or_next>> ! 225: Criteria ! 226: [[p and_or_set -> and_or_comp]], ! 227: ! 228: or[2] ! 229: SET OF ! 230: <<and_or_set = parm -> un.and_or; ! 231: and_or_set; ! 232: and_or_set = and_or_set -> and_or_next>> ! 233: Criteria ! 234: [[p and_or_set -> and_or_comp]], ! 235: ! 236: not[3] ! 237: Criteria ! 238: [[p parm -> un.not ]] ! 239: } ! 240: ! 241: ! 242: ! 243: Guide [[ P struct Guide *]] ! 244: ::= ! 245: SET { ! 246: objectClass [0] ! 247: OBJECT IDENTIFIER ! 248: [[O parm -> objectClass ]] ! 249: OPTIONAL <<parm -> objectClass>>, ! 250: criteria [1] ! 251: Criteria [[p parm -> criteria]] ! 252: } ! 253: ! 254: END ! 255: ! 256: ! 257: ! 258:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.