
This directory contains a few examples.

1.  The ./sample.source.PKIX1 directory contains the X.509 Certificate decoder,
    as specified in rfc3280.txt. Just type `make` in there to compile.

2.  The ./sample.source.MHEG5 directory contains the decoder for
    ISO 13522 MHEG-5/ITU-T T.172 (Multimedia Hypermedia Experts Group,
    Multimedia Presentations). Read the README file in that directory.

3.  The ./sample.source.MEGACO directory contains the decoder for
    Media Gateway Control Protocol data units as specified in rfc3525.txt.

4.  The ./sample.source.LDAP3 directory contains the decoder for
    Lightweight Directory Access Protocol version 3 PDU as specified in
    rfc4211.txt.

5.  The ./sample.source.RRC directory contains the 3GPP Radio Resource Control
    decoder for RRC version 7.1.0. Just type `make` in there to compile.

6.  The ./sample.source.LTE-RRC directory contains the 3GPP RRC
    decoder for LTE RRC version 14.2.1. Read the README file in that directory.

7.  The ./sample.source.TAP3 directory contains the GSM TAP3 decoder.
    Before trying to compile, read the README file in that directory.

8.  The ./sample.source.ULP directory contains the Open Mobile Alliance
    UserPlane Location Protocol decoder.
    Before trying to compile, read the README file in that directory.

9.  The ./sample.source.J2735 directory contains the SAE J2735-201603 decoder.
    Before trying to compile, read the README file in that directory.
    WARNING WARNING WARNING: WORK IN PROGRESS. Not supposed to work yet.

10. The ./sample.source.1609.2 directory contains the IEEE 1609.2-2016 decoder.
    Before trying to compile, read the README file in that directory.
    WARNING WARNING WARNING: WORK IN PROGRESS. Not supposed to work yet.

The crfc2asn1.pl script can be used to extract ASN.1 data from RFC texts.
For instance, it is used to extract X.509, MEGACO, and LDAPv3 ASN.1 modules
from the corresponding RFC texts (rfc3280.txt, rfc3525.txt, rfc4211.txt).

To regenerate the .asn1 files from the original RFC texts, execute
`make clean; make` in the current directory.

