Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/Makefile
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/Makefile	(revision 39078)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/Makefile	(working copy)
@@ -7,4 +7,19 @@
 CFLAGS+= $(ASN_MODULE_CFLAGS) -DASN_EMIT_DEBUG=1 -DASN_PDU_COLLECTION -I.
 INCS = $(ASN_MODULE_HDRS)
 
+PROG_CFLAGS= -I. -I asn1c_skeletons
+PROG_LDADD= -L. -lasncodec
+
+TEST1 = test/parse_connect_msg
+TEST2 = test/parse_setup_msg
+$(TEST1): test/parse_connect_msg.c lib$(LIB).a
+	$(CC) -o test/parse_connect_msg test/parse_connect_msg.c $(CFLAGS) $(PROG_CFLAGS) $(PROG_LDADD) $(LDADD)
+
+$(TEST2): test/parse_setup_msg.c lib$(LIB).a
+	$(CC) -o test/parse_setup_msg test/parse_setup_msg.c $(CFLAGS) $(PROG_CFLAGS) $(PROG_LDADD) $(LDADD)
+
+all: lib${LIB}.a ${TEST1} $(TEST2)
+
+clean:
+	rm -f lib${LIB}.a ${TEST1} $(TEST2) *.o
 .include <bsd.lib.mk>
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ANY.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ANY.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ANY.h	(working copy)
@@ -0,0 +1,65 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_TYPE_ANY_H
+#define ASN_TYPE_ANY_H
+
+#include <OCTET_STRING.h>	/* Implemented via OCTET STRING type */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct ANY {
+	uint8_t *buf;	/* BER-encoded ANY contents */
+	int size;	/* Size of the above buffer */
+
+	asn_struct_ctx_t _asn_ctx;	/* Parsing across buffer boundaries */
+} ANY_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_ANY;
+extern asn_TYPE_operation_t asn_OP_ANY;
+extern asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs;
+
+asn_struct_free_f ANY_free;
+asn_struct_print_f ANY_print;
+ber_type_decoder_f ANY_decode_ber;
+der_type_encoder_f ANY_encode_der;
+xer_type_encoder_f ANY_encode_xer;
+per_type_decoder_f ANY_decode_uper;
+per_type_encoder_f ANY_encode_uper;
+per_type_decoder_f ANY_decode_aper;
+per_type_encoder_f ANY_encode_aper;
+
+#define ANY_free         OCTET_STRING_free
+#define ANY_print        OCTET_STRING_print
+#define ANY_compare      OCTET_STRING_compare
+#define ANY_constraint   asn_generic_no_constraint
+#define ANY_decode_ber   OCTET_STRING_decode_ber
+#define ANY_encode_der   OCTET_STRING_encode_der
+#define ANY_decode_xer   OCTET_STRING_decode_xer_hex
+
+/******************************
+ * Handy conversion routines. *
+ ******************************/
+
+/* Convert another ASN.1 type into the ANY. This implies DER encoding. */
+int ANY_fromType(ANY_t *, asn_TYPE_descriptor_t *td, void *struct_ptr);
+int ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr);
+ANY_t *ANY_new_fromType(asn_TYPE_descriptor_t *td, void *struct_ptr);
+ANY_t *ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr);
+
+/* Convert the contents of the ANY type into the specified type. */
+int ANY_to_type(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr);
+int ANY_to_type_aper(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr);
+
+#define	ANY_fromBuf(s, buf, size)	OCTET_STRING_fromBuf((s), (buf), (size))
+#define	ANY_new_fromBuf(buf, size)	OCTET_STRING_new_fromBuf(	\
+						&asn_DEF_ANY, (buf), (size))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_TYPE_ANY_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/BIT_STRING.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/BIT_STRING.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/BIT_STRING.h	(working copy)
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_BIT_STRING_H_
+#define	_BIT_STRING_H_
+
+#include <OCTET_STRING.h>	/* Some help from OCTET STRING */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct BIT_STRING_s {
+	uint8_t *buf;	/* BIT STRING body */
+	size_t size;	/* Size of the above buffer */
+
+	int bits_unused;/* Unused trailing bits in the last octet (0..7) */
+
+	asn_struct_ctx_t _asn_ctx;	/* Parsing across buffer boundaries */
+} BIT_STRING_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING;
+extern asn_TYPE_operation_t asn_OP_BIT_STRING;
+extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs;
+
+asn_struct_print_f BIT_STRING_print;	/* Human-readable output */
+asn_struct_compare_f BIT_STRING_compare;
+asn_constr_check_f BIT_STRING_constraint;
+xer_type_encoder_f BIT_STRING_encode_xer;
+oer_type_decoder_f BIT_STRING_decode_oer;
+oer_type_encoder_f BIT_STRING_encode_oer;
+per_type_decoder_f BIT_STRING_decode_uper;
+per_type_encoder_f BIT_STRING_encode_uper;
+asn_random_fill_f  BIT_STRING_random_fill;
+
+#define BIT_STRING_free              OCTET_STRING_free
+#define BIT_STRING_decode_ber        OCTET_STRING_decode_ber
+#define BIT_STRING_encode_der        OCTET_STRING_encode_der
+#define BIT_STRING_decode_xer        OCTET_STRING_decode_xer_binary
+#define BIT_STRING_decode_aper       OCTET_STRING_decode_aper
+#define BIT_STRING_encode_aper       OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BIT_STRING_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/BMPString.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/BMPString.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/BMPString.h	(working copy)
@@ -0,0 +1,39 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_BMPString_H_
+#define	_BMPString_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t BMPString_t;  /* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_BMPString;
+extern asn_TYPE_operation_t asn_OP_BMPString;
+extern asn_OCTET_STRING_specifics_t asn_SPC_BMPString_specs;
+
+asn_struct_print_f BMPString_print;	/* Human-readable output */
+asn_constr_check_f BMPString_constraint;
+xer_type_decoder_f BMPString_decode_xer;
+xer_type_encoder_f BMPString_encode_xer;
+
+#define BMPString_free          OCTET_STRING_free
+#define BMPString_print         BMPString_print
+#define BMPString_compare       OCTET_STRING_compare
+#define BMPString_decode_ber    OCTET_STRING_decode_ber
+#define BMPString_encode_der    OCTET_STRING_encode_der
+#define BMPString_decode_uper   OCTET_STRING_decode_uper
+#define BMPString_encode_uper   OCTET_STRING_encode_uper
+#define BMPString_decode_aper   OCTET_STRING_decode_aper
+#define BMPString_encode_aper   OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BMPString_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/BOOLEAN.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/BOOLEAN.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/BOOLEAN.h	(working copy)
@@ -0,0 +1,45 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_BOOLEAN_H_
+#define	_BOOLEAN_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The underlying integer may contain various values, but everything
+ * non-zero is capped to 0xff by the DER encoder. The BER decoder may
+ * yield non-zero values different from 1, beware.
+ */
+typedef int BOOLEAN_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN;
+extern asn_TYPE_operation_t asn_OP_BOOLEAN;
+
+asn_struct_free_f BOOLEAN_free;
+asn_struct_print_f BOOLEAN_print;
+asn_struct_compare_f BOOLEAN_compare;
+ber_type_decoder_f BOOLEAN_decode_ber;
+der_type_encoder_f BOOLEAN_encode_der;
+oer_type_decoder_f BOOLEAN_decode_oer;
+oer_type_encoder_f BOOLEAN_encode_oer;
+per_type_decoder_f BOOLEAN_decode_uper;
+per_type_encoder_f BOOLEAN_encode_uper;
+per_type_decoder_f BOOLEAN_decode_aper;
+per_type_encoder_f BOOLEAN_encode_aper;
+xer_type_decoder_f BOOLEAN_decode_xer;
+xer_type_encoder_f BOOLEAN_encode_xer;
+asn_random_fill_f  BOOLEAN_random_fill;
+
+#define BOOLEAN_constraint     asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BOOLEAN_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ENUMERATED.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ENUMERATED.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ENUMERATED.h	(working copy)
@@ -0,0 +1,40 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_ENUMERATED_H_
+#define	_ENUMERATED_H_
+
+#include <INTEGER.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef INTEGER_t ENUMERATED_t;		/* Implemented via INTEGER */
+
+extern asn_TYPE_descriptor_t asn_DEF_ENUMERATED;
+extern asn_TYPE_operation_t asn_OP_ENUMERATED;
+
+oer_type_decoder_f ENUMERATED_decode_oer;
+oer_type_encoder_f ENUMERATED_encode_oer;
+per_type_decoder_f ENUMERATED_decode_uper;
+per_type_encoder_f ENUMERATED_encode_uper;
+per_type_decoder_f ENUMERATED_decode_aper;
+per_type_encoder_f ENUMERATED_encode_aper;
+
+#define ENUMERATED_free       ASN__PRIMITIVE_TYPE_free
+#define ENUMERATED_print      INTEGER_print
+#define ENUMERATED_compare    INTEGER_compare
+#define ENUMERATED_constraint asn_generic_no_constraint
+#define ENUMERATED_decode_ber ber_decode_primitive
+#define ENUMERATED_encode_der INTEGER_encode_der
+#define ENUMERATED_decode_xer INTEGER_decode_xer
+#define ENUMERATED_encode_xer INTEGER_encode_xer
+#define ENUMERATED_random_fill INTEGER_random_fill
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ENUMERATED_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/GeneralString.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/GeneralString.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/GeneralString.h	(working copy)
@@ -0,0 +1,36 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_GeneralString_H_
+#define	_GeneralString_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t GeneralString_t;	/* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_GeneralString;
+extern asn_TYPE_operation_t asn_OP_GeneralString;
+
+#define GeneralString_free          OCTET_STRING_free
+#define GeneralString_print         OCTET_STRING_print
+#define GeneralString_compare       OCTET_STRING_compare
+#define GeneralString_constraint    asn_generic_unknown_constraint
+#define GeneralString_decode_ber    OCTET_STRING_decode_ber
+#define GeneralString_encode_der    OCTET_STRING_encode_der
+#define GeneralString_decode_xer    OCTET_STRING_decode_xer_hex
+#define GeneralString_encode_xer    OCTET_STRING_encode_xer
+#define GeneralString_decode_uper   OCTET_STRING_decode_uper
+#define GeneralString_encode_uper   OCTET_STRING_encode_uper
+#define GeneralString_decode_aper   OCTET_STRING_decode_aper
+#define GeneralString_encode_aper   OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GeneralString_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/GeneralizedTime.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/GeneralizedTime.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/GeneralizedTime.h	(working copy)
@@ -0,0 +1,80 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_GeneralizedTime_H_
+#define	_GeneralizedTime_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t GeneralizedTime_t;  /* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_GeneralizedTime;
+extern asn_TYPE_operation_t asn_OP_GeneralizedTime;
+
+asn_struct_print_f GeneralizedTime_print;
+asn_struct_compare_f GeneralizedTime_compare;
+asn_constr_check_f GeneralizedTime_constraint;
+der_type_encoder_f GeneralizedTime_encode_der;
+xer_type_encoder_f GeneralizedTime_encode_xer;
+asn_random_fill_f  GeneralizedTime_random_fill;
+
+#define GeneralizedTime_free           OCTET_STRING_free
+#define GeneralizedTime_decode_ber     OCTET_STRING_decode_ber
+#define GeneralizedTime_decode_xer     OCTET_STRING_decode_xer_utf8
+#define GeneralizedTime_decode_uper    OCTET_STRING_decode_uper
+#define GeneralizedTime_encode_uper    OCTET_STRING_encode_uper
+#define GeneralizedTime_decode_aper    OCTET_STRING_decode_aper
+#define GeneralizedTime_encode_aper    OCTET_STRING_encode_aper
+
+/***********************
+ * Some handy helpers. *
+ ***********************/
+
+struct tm;	/* <time.h> */
+
+/*
+ * Convert a GeneralizedTime structure into time_t
+ * and optionally into struct tm.
+ * If as_gmt is given, the resulting _optional_tm4fill will have a GMT zone,
+ * instead of default local one.
+ * On error returns -1 and errno set to EINVAL
+ */
+time_t asn_GT2time(const GeneralizedTime_t *, struct tm *_optional_tm4fill,
+	int as_gmt);
+
+/* A version of the above function also returning the fractions of seconds */
+time_t asn_GT2time_frac(const GeneralizedTime_t *,
+	int *frac_value, int *frac_digits,	/* (value / (10 ^ digits)) */
+	struct tm *_optional_tm4fill, int as_gmt);
+
+/*
+ * Another version returning fractions with defined precision
+ * For example, parsing of the time ending with ".1" seconds
+ * with frac_digits=3 (msec) would yield frac_value = 100.
+ */
+time_t asn_GT2time_prec(const GeneralizedTime_t *,
+	int *frac_value, int frac_digits,
+	struct tm *_optional_tm4fill, int as_gmt);
+
+/*
+ * Convert a struct tm into GeneralizedTime.
+ * If _optional_gt is not given, this function will try to allocate one.
+ * If force_gmt is given, the resulting GeneralizedTime will be forced
+ * into a GMT time zone (encoding ends with a "Z").
+ * On error, this function returns 0 and sets errno.
+ */
+GeneralizedTime_t *asn_time2GT(GeneralizedTime_t *_optional_gt,
+	const struct tm *, int force_gmt);
+GeneralizedTime_t *asn_time2GT_frac(GeneralizedTime_t *_optional_gt,
+	const struct tm *, int frac_value, int frac_digits, int force_gmt);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GeneralizedTime_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/GraphicString.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/GraphicString.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/GraphicString.h	(working copy)
@@ -0,0 +1,36 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_GraphicString_H_
+#define	_GraphicString_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t GraphicString_t;	/* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_GraphicString;
+extern asn_TYPE_operation_t asn_OP_GraphicString;
+
+#define GraphicString_free          OCTET_STRING_free
+#define GraphicString_print         OCTET_STRING_print
+#define GraphicString_compare       OCTET_STRING_compare
+#define GraphicString_constraint    asn_generic_unknown_constraint
+#define GraphicString_decode_ber    OCTET_STRING_decode_ber
+#define GraphicString_encode_der    OCTET_STRING_encode_der
+#define GraphicString_decode_xer    OCTET_STRING_decode_xer_hex
+#define GraphicString_encode_xer    OCTET_STRING_encode_xer
+#define GraphicString_decode_uper   OCTET_STRING_decode_uper
+#define GraphicString_encode_uper   OCTET_STRING_encode_uper
+#define GraphicString_decode_aper   OCTET_STRING_decode_aper
+#define GraphicString_encode_aper   OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _GraphicString_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/IA5String.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/IA5String.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/IA5String.h	(working copy)
@@ -0,0 +1,40 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_IA5String_H_
+#define	_IA5String_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t IA5String_t;  /* Implemented via OCTET STRING */
+
+/*
+ * IA5String ASN.1 type definition.
+ */
+extern asn_TYPE_descriptor_t asn_DEF_IA5String;
+extern asn_TYPE_operation_t asn_OP_IA5String;
+
+asn_constr_check_f IA5String_constraint;
+
+#define IA5String_free          OCTET_STRING_free
+#define IA5String_print         OCTET_STRING_print_utf8
+#define IA5String_compare       OCTET_STRING_compare
+#define IA5String_decode_ber    OCTET_STRING_decode_ber
+#define IA5String_encode_der    OCTET_STRING_encode_der
+#define IA5String_decode_xer    OCTET_STRING_decode_xer_utf8
+#define IA5String_encode_xer    OCTET_STRING_encode_xer_utf8
+#define IA5String_decode_uper   OCTET_STRING_decode_uper
+#define IA5String_encode_uper   OCTET_STRING_encode_uper
+#define IA5String_decode_aper   OCTET_STRING_decode_aper
+#define IA5String_encode_aper   OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _IA5String_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/INTEGER.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/INTEGER.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/INTEGER.h	(working copy)
@@ -0,0 +1,108 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_INTEGER_H_
+#define	_INTEGER_H_
+
+#include <asn_application.h>
+#include <asn_codecs_prim.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef ASN__PRIMITIVE_TYPE_t INTEGER_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_INTEGER;
+extern asn_TYPE_operation_t asn_OP_INTEGER;
+
+/* Map with <tag> to integer value association */
+typedef struct asn_INTEGER_enum_map_s {
+	long		 nat_value;	/* associated native integer value */
+	size_t		 enum_len;	/* strlen("tag") */
+	const char	*enum_name;	/* "tag" */
+} asn_INTEGER_enum_map_t;
+
+/* This type describes an enumeration for INTEGER and ENUMERATED types */
+typedef struct asn_INTEGER_specifics_s {
+	const asn_INTEGER_enum_map_t *value2enum;	/* N -> "tag"; sorted by N */
+	const unsigned int *enum2value;		/* "tag" => N; sorted by tag */
+	int map_count;				/* Elements in either map */
+	int extension;				/* This map is extensible */
+	int strict_enumeration;			/* Enumeration set is fixed */
+	int field_width;			/* Size of native integer */
+	int field_unsigned;			/* Signed=0, unsigned=1 */
+} asn_INTEGER_specifics_t;
+
+#define INTEGER_free    ASN__PRIMITIVE_TYPE_free
+#define INTEGER_decode_ber	ber_decode_primitive
+#define INTEGER_constraint	asn_generic_no_constraint
+asn_struct_print_f INTEGER_print;
+asn_struct_compare_f INTEGER_compare;
+der_type_encoder_f INTEGER_encode_der;
+xer_type_decoder_f INTEGER_decode_xer;
+xer_type_encoder_f INTEGER_encode_xer;
+oer_type_decoder_f INTEGER_decode_oer;
+oer_type_encoder_f INTEGER_encode_oer;
+per_type_decoder_f INTEGER_decode_uper;
+per_type_encoder_f INTEGER_encode_uper;
+per_type_decoder_f INTEGER_decode_aper;
+per_type_encoder_f INTEGER_encode_aper;
+asn_random_fill_f  INTEGER_random_fill;
+
+/***********************************
+ * Some handy conversion routines. *
+ ***********************************/
+
+/*
+ * Natiwe size-independent conversion of native integers to/from INTEGER.
+ * (l_size) is in bytes.
+ * Returns 0 if it was possible to convert, -1 otherwise.
+ * -1/EINVAL: Mandatory argument missing
+ * -1/ERANGE: Value encoded is out of range for long representation
+ * -1/ENOMEM: Memory allocation failed (in asn_*2INTEGER()).
+ */
+int asn_INTEGER2imax(const INTEGER_t *i, intmax_t *l);
+int asn_INTEGER2umax(const INTEGER_t *i, uintmax_t *l);
+int asn_imax2INTEGER(INTEGER_t *i, intmax_t l);
+int asn_umax2INTEGER(INTEGER_t *i, uintmax_t l);
+
+/*
+ * Size-specific conversion helpers.
+ */
+int asn_INTEGER2long(const INTEGER_t *i, long *l);
+int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l);
+int asn_long2INTEGER(INTEGER_t *i, long l);
+int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l);
+int asn_int642INTEGER(INTEGER_t *i, int64_t l);
+int asn_uint642INTEGER(INTEGER_t *i, uint64_t l);
+
+/* A version of strtol/strtoimax(3) with nicer error reporting. */
+enum asn_strtox_result_e {
+    ASN_STRTOX_ERROR_RANGE = -3,  /* Input outside of supported numeric range */
+    ASN_STRTOX_ERROR_INVAL = -2,  /* Invalid data encountered (e.g., "+-") */
+    ASN_STRTOX_EXPECT_MORE = -1,  /* More data expected (e.g. "+") */
+    ASN_STRTOX_OK          =  0,  /* Conversion succeded, number ends at (*end) */
+    ASN_STRTOX_EXTRA_DATA  =  1   /* Conversion succeded, but the string has extra stuff */
+};
+enum asn_strtox_result_e asn_strtol_lim(const char *str, const char **end,
+                                        long *l);
+enum asn_strtox_result_e asn_strtoul_lim(const char *str, const char **end,
+                                         unsigned long *l);
+enum asn_strtox_result_e asn_strtoimax_lim(const char *str, const char **end,
+                                           intmax_t *l);
+enum asn_strtox_result_e asn_strtoumax_lim(const char *str, const char **end,
+                                           uintmax_t *l);
+
+/*
+ * Convert the integer value into the corresponding enumeration map entry.
+ */
+const asn_INTEGER_enum_map_t *INTEGER_map_value2enum(
+    const asn_INTEGER_specifics_t *specs, long value);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _INTEGER_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ISO646String.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ISO646String.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ISO646String.h	(working copy)
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_ISO646String_H_
+#define	_ISO646String_H_
+
+#include <asn_application.h>
+#include <VisibleString.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef VisibleString_t ISO646String_t;	/* Implemented using VisibleString */
+
+extern asn_TYPE_descriptor_t asn_DEF_ISO646String;
+extern asn_TYPE_operation_t asn_OP_ISO646String;
+
+#define ISO646String_free           OCTET_STRING_free
+#define ISO646String_print          OCTET_STRING_print_utf8
+#define ISO646String_compare        OCTET_STRING_compare
+#define ISO646String_constraint     VisibleString_constraint
+#define ISO646String_decode_ber     OCTET_STRING_decode_ber
+#define ISO646String_encode_der     OCTET_STRING_encode_der
+#define ISO646String_decode_xer     OCTET_STRING_decode_xer_utf8
+#define ISO646String_encode_xer     OCTET_STRING_encode_xer_utf8
+#define ISO646String_decode_uper    OCTET_STRING_decode_uper
+#define ISO646String_encode_uper    OCTET_STRING_encode_uper
+#define ISO646String_decode_aper    OCTET_STRING_decode_aper
+#define ISO646String_encode_aper    OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ISO646String_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NULL.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NULL.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NULL.h	(working copy)
@@ -0,0 +1,45 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_TYPE_NULL_H
+#define	ASN_TYPE_NULL_H
+
+#include <asn_application.h>
+#include <BOOLEAN.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The value of the NULL type is meaningless: see BOOLEAN if you want to
+ * carry true/false semantics.
+ */
+typedef int NULL_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_NULL;
+extern asn_TYPE_operation_t asn_OP_NULL;
+
+asn_struct_print_f NULL_print;
+asn_struct_compare_f NULL_compare;
+der_type_encoder_f NULL_encode_der;
+xer_type_decoder_f NULL_decode_xer;
+xer_type_encoder_f NULL_encode_xer;
+oer_type_decoder_f NULL_decode_oer;
+oer_type_encoder_f NULL_encode_oer;
+per_type_decoder_f NULL_decode_uper;
+per_type_encoder_f NULL_encode_uper;
+per_type_decoder_f NULL_decode_aper;
+per_type_encoder_f NULL_encode_aper;
+asn_random_fill_f  NULL_random_fill;
+
+#define NULL_free	BOOLEAN_free
+#define NULL_decode_ber	BOOLEAN_decode_ber
+#define NULL_constraint	asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* NULL_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NativeEnumerated.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NativeEnumerated.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NativeEnumerated.h	(working copy)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * This type differs from the standard ENUMERATED in that it is modelled using
+ * the fixed machine type (long, int, short), so it can hold only values of
+ * limited length. There is no type (i.e., NativeEnumerated_t, any integer type
+ * will do).
+ * This type may be used when integer range is limited by subtype constraints.
+ */
+#ifndef	_NativeEnumerated_H_
+#define	_NativeEnumerated_H_
+
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated;
+extern asn_TYPE_operation_t asn_OP_NativeEnumerated;
+
+xer_type_encoder_f NativeEnumerated_encode_xer;
+oer_type_decoder_f NativeEnumerated_decode_oer;
+oer_type_encoder_f NativeEnumerated_encode_oer;
+per_type_decoder_f NativeEnumerated_decode_uper;
+per_type_encoder_f NativeEnumerated_encode_uper;
+per_type_decoder_f NativeEnumerated_decode_aper;
+per_type_encoder_f NativeEnumerated_encode_aper;
+
+#define NativeEnumerated_free       NativeInteger_free
+#define NativeEnumerated_print      NativeInteger_print
+#define NativeEnumerated_compare    NativeInteger_compare
+#define NativeEnumerated_random_fill NativeInteger_random_fill
+#define NativeEnumerated_constraint asn_generic_no_constraint
+#define NativeEnumerated_decode_ber NativeInteger_decode_ber
+#define NativeEnumerated_encode_der NativeInteger_encode_der
+#define NativeEnumerated_decode_xer NativeInteger_decode_xer
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _NativeEnumerated_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NativeInteger.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NativeInteger.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NativeInteger.h	(working copy)
@@ -0,0 +1,46 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * This type differs from the standard INTEGER in that it is modelled using
+ * the fixed machine type (long, int, short), so it can hold only values of
+ * limited length. There is no type (i.e., NativeInteger_t, any integer type
+ * will do).
+ * This type may be used when integer range is limited by subtype constraints.
+ */
+#ifndef	_NativeInteger_H_
+#define	_NativeInteger_H_
+
+#include <asn_application.h>
+#include <INTEGER.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern asn_TYPE_descriptor_t asn_DEF_NativeInteger;
+extern asn_TYPE_operation_t asn_OP_NativeInteger;
+
+asn_struct_free_f  NativeInteger_free;
+asn_struct_print_f NativeInteger_print;
+asn_struct_compare_f NativeInteger_compare;
+ber_type_decoder_f NativeInteger_decode_ber;
+der_type_encoder_f NativeInteger_encode_der;
+xer_type_decoder_f NativeInteger_decode_xer;
+xer_type_encoder_f NativeInteger_encode_xer;
+oer_type_decoder_f NativeInteger_decode_oer;
+oer_type_encoder_f NativeInteger_encode_oer;
+per_type_decoder_f NativeInteger_decode_uper;
+per_type_encoder_f NativeInteger_encode_uper;
+per_type_decoder_f NativeInteger_decode_aper;
+per_type_encoder_f NativeInteger_encode_aper;
+asn_random_fill_f  NativeInteger_random_fill;
+
+#define NativeInteger_constraint  asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _NativeInteger_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NativeReal.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NativeReal.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NativeReal.h	(working copy)
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * This type differs from the standard REAL in that it is modelled using
+ * the fixed machine type (double), so it can hold only values of
+ * limited precision. There is no explicit type (i.e., NativeReal_t).
+ * Use of this type is normally enabled by -fnative-types.
+ */
+#ifndef	ASN_TYPE_NativeReal_H
+#define	ASN_TYPE_NativeReal_H
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct asn_NativeReal_specifics_s {
+    unsigned float_size; /* sizeof(float) or sizeof(double) */
+} asn_NativeReal_specifics_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_NativeReal;
+extern asn_TYPE_operation_t asn_OP_NativeReal;
+
+asn_struct_free_f  NativeReal_free;
+asn_struct_print_f NativeReal_print;
+asn_struct_compare_f NativeReal_compare;
+ber_type_decoder_f NativeReal_decode_ber;
+der_type_encoder_f NativeReal_encode_der;
+per_type_decoder_f NativeReal_decode_uper;
+per_type_encoder_f NativeReal_encode_uper;
+per_type_decoder_f NativeReal_decode_aper;
+per_type_encoder_f NativeReal_encode_aper;
+oer_type_decoder_f NativeReal_decode_oer;
+oer_type_encoder_f NativeReal_encode_oer;
+xer_type_decoder_f NativeReal_decode_xer;
+xer_type_encoder_f NativeReal_encode_xer;
+asn_random_fill_f  NativeReal_random_fill;
+
+#define NativeReal_constraint  asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_TYPE_NativeReal_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NumericString.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NumericString.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/NumericString.h	(working copy)
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_NumericString_H_
+#define	_NumericString_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t NumericString_t;	/* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_NumericString;
+extern asn_TYPE_operation_t asn_OP_NumericString;
+
+asn_constr_check_f NumericString_constraint;
+
+#define NumericString_free          OCTET_STRING_free
+#define NumericString_print         OCTET_STRING_print_utf8
+#define NumericString_compare       OCTET_STRING_compare
+#define NumericString_decode_ber    OCTET_STRING_decode_ber
+#define NumericString_encode_der    OCTET_STRING_encode_der
+#define NumericString_decode_xer    OCTET_STRING_decode_xer_utf8
+#define NumericString_encode_xer    OCTET_STRING_encode_xer_utf8
+#define NumericString_decode_uper   OCTET_STRING_decode_uper
+#define NumericString_encode_uper   OCTET_STRING_encode_uper
+#define NumericString_decode_aper   OCTET_STRING_decode_aper
+#define NumericString_encode_aper   OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _NumericString_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/OBJECT_IDENTIFIER.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/OBJECT_IDENTIFIER.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/OBJECT_IDENTIFIER.h	(working copy)
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_OBJECT_IDENTIFIER_H_
+#define	_OBJECT_IDENTIFIER_H_
+
+#include <asn_application.h>
+#include <asn_codecs_prim.h>
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef uint32_t asn_oid_arc_t;
+#define ASN_OID_ARC_MAX (~((asn_oid_arc_t)0))
+
+typedef ASN__PRIMITIVE_TYPE_t OBJECT_IDENTIFIER_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER;
+extern asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER;
+
+asn_struct_print_f OBJECT_IDENTIFIER_print;
+asn_constr_check_f OBJECT_IDENTIFIER_constraint;
+der_type_encoder_f OBJECT_IDENTIFIER_encode_der;
+xer_type_decoder_f OBJECT_IDENTIFIER_decode_xer;
+xer_type_encoder_f OBJECT_IDENTIFIER_encode_xer;
+asn_random_fill_f  OBJECT_IDENTIFIER_random_fill;
+
+#define OBJECT_IDENTIFIER_free           ASN__PRIMITIVE_TYPE_free
+#define OBJECT_IDENTIFIER_compare        OCTET_STRING_compare
+#define OBJECT_IDENTIFIER_decode_ber     ber_decode_primitive
+#define OBJECT_IDENTIFIER_encode_der     der_encode_primitive
+#define OBJECT_IDENTIFIER_decode_oer     oer_decode_primitive
+#define OBJECT_IDENTIFIER_encode_oer     oer_encode_primitive
+#define OBJECT_IDENTIFIER_decode_uper    OCTET_STRING_decode_uper
+#define OBJECT_IDENTIFIER_encode_uper    OCTET_STRING_encode_uper
+#define OBJECT_IDENTIFIER_decode_aper    OCTET_STRING_decode_aper
+#define OBJECT_IDENTIFIER_encode_aper    OCTET_STRING_encode_aper
+
+/**********************************
+ * Some handy conversion routines *
+ **********************************/
+
+/*
+ * This function fills an (arcs) array with OBJECT IDENTIFIER arcs
+ * up to specified (arc_slots) elements.
+ *
+ * EXAMPLE:
+ * 	void print_arcs(OBJECT_IDENTIFIER_t *oid) {
+ * 		asn_oid_arc_t fixed_arcs[10];	// Try with fixed space first
+ * 		asn_oid_arc_t *arcs = fixed_arcs;
+ * 		size_t arc_slots = sizeof(fixed_arcs)/sizeof(fixed_arcs[0]); // 10
+ * 		ssize_t count;	// Real number of arcs.
+ * 		int i;
+ *
+ * 		count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots);
+ * 		// If necessary, reallocate arcs array and try again.
+ * 		if(count > arc_slots) {
+ * 			arc_slots = count;
+ * 			arcs = malloc(sizeof(asn_oid_arc_t) * arc_slots);
+ * 			if(!arcs) return;
+ * 			count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots);
+ * 			assert(count == arc_slots);
+ * 		}
+ *
+ * 		// Print the contents of the arcs array.
+ * 		for(i = 0; i < count; i++)
+ * 			printf("%"PRIu32"\n", arcs[i]);
+ *
+ * 		// Avoid memory leak.
+ * 		if(arcs != fixed_arcs) free(arcs);
+ * 	}
+ *
+ * RETURN VALUES:
+ * -1/EINVAL:	Invalid arguments (oid is missing)
+ * -1/ERANGE:	One or more arcs have value out of array cell type range.
+ * >=0:		Number of arcs contained in the OBJECT IDENTIFIER
+ *
+ * WARNING: The function always returns the actual number of arcs,
+ * even if there is no sufficient (arc_slots) provided.
+ */
+ssize_t OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *oid,
+                                   asn_oid_arc_t *arcs, size_t arc_slots);
+
+/*
+ * This functions initializes the OBJECT IDENTIFIER object with
+ * the given set of arcs.
+ * The minimum of two arcs must be present; some restrictions apply.
+ * RETURN VALUES:
+ * -1/EINVAL:	Invalid arguments
+ * -1/ERANGE:	The first two arcs do not conform to ASN.1 restrictions.
+ * -1/ENOMEM:	Memory allocation failed
+ * 0:		The object was initialized with new arcs.
+ */
+int OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid,
+                               const asn_oid_arc_t *arcs, size_t arcs_count);
+
+
+/*
+ * Parse the OBJECT IDENTIFIER textual representation ("1.3.6.1.4.1.9363").
+ * No arc can exceed the (0..ASN_OID_ARC_MAX, which is the same as UINT32_MAX).
+ * This function is not specific to OBJECT IDENTIFIER, it may be used to parse
+ * the RELATIVE-OID data, or any other data consisting of dot-separated
+ * series of numeric values.
+ *
+ * If (oid_txt_length == -1), the strlen() will be invoked to determine the
+ * size of the (oid_text) string.
+ * 
+ * After return, the optional (opt_oid_text_end) is set to the character after
+ * the last parsed one. (opt_oid_text_end) is never less than (oid_text).
+ * 
+ * RETURN VALUES:
+ *   -1:	Parse error.
+ * >= 0:	Number of arcs contained in the OBJECT IDENTIFIER.
+ * 
+ * WARNING: The function always returns the real number of arcs,
+ * even if there is no sufficient (arc_slots) provided.
+ * This is useful for (arc_slots) value estimation.
+ */
+ssize_t OBJECT_IDENTIFIER_parse_arcs(const char *oid_text,
+                                     ssize_t oid_txt_length,
+                                     asn_oid_arc_t *arcs, size_t arcs_count,
+                                     const char **opt_oid_text_end);
+
+/*
+ * Internal functions.
+ * Used by RELATIVE-OID implementation in particular.
+ */
+
+/*
+ * Retrieve a single arc of size from the (arcbuf) buffer.
+ * RETURN VALUES:
+ *  -1: Failed to retrieve the value from the (arcbuf).
+ *  >0: Number of bytes consumed from the (arcbuf), <= (arcbuf_len).
+ */
+ssize_t OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf,
+                                         size_t arcbuf_len,
+                                         asn_oid_arc_t *ret_value);
+
+/*
+ * Write the unterminated arc value into the (arcbuf) which has the size at
+ * least (arcbuf_len).
+ * RETURN VALUES:
+ *   -1: (arcbuf_len) size is not sufficient to write the value.
+ *  <n>: Number of bytes appended to the arcbuf (<= arcbuf_len).
+ */
+ssize_t OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len,
+                                         asn_oid_arc_t arc_value);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _OBJECT_IDENTIFIER_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/OCTET_STRING.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/OCTET_STRING.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/OCTET_STRING.h	(working copy)
@@ -0,0 +1,102 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_OCTET_STRING_H_
+#define	_OCTET_STRING_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct OCTET_STRING {
+	uint8_t *buf;	/* Buffer with consecutive OCTET_STRING bits */
+	size_t size;	/* Size of the buffer */
+
+	asn_struct_ctx_t _asn_ctx;	/* Parsing across buffer boundaries */
+} OCTET_STRING_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING;
+extern asn_TYPE_operation_t asn_OP_OCTET_STRING;
+
+asn_struct_free_f OCTET_STRING_free;
+asn_struct_print_f OCTET_STRING_print;
+asn_struct_print_f OCTET_STRING_print_utf8;
+asn_struct_compare_f OCTET_STRING_compare;
+ber_type_decoder_f OCTET_STRING_decode_ber;
+der_type_encoder_f OCTET_STRING_encode_der;
+xer_type_decoder_f OCTET_STRING_decode_xer_hex;		/* Hexadecimal */
+xer_type_decoder_f OCTET_STRING_decode_xer_binary;	/* 01010111010 */
+xer_type_decoder_f OCTET_STRING_decode_xer_utf8;	/* ASCII/UTF-8 */
+xer_type_encoder_f OCTET_STRING_encode_xer;
+xer_type_encoder_f OCTET_STRING_encode_xer_utf8;
+oer_type_decoder_f OCTET_STRING_decode_oer;
+oer_type_encoder_f OCTET_STRING_encode_oer;
+per_type_decoder_f OCTET_STRING_decode_uper;
+per_type_encoder_f OCTET_STRING_encode_uper;
+per_type_decoder_f OCTET_STRING_decode_aper;
+per_type_encoder_f OCTET_STRING_encode_aper;
+asn_random_fill_f  OCTET_STRING_random_fill;
+
+#define OCTET_STRING_constraint  asn_generic_no_constraint
+#define OCTET_STRING_decode_xer  OCTET_STRING_decode_xer_hex
+
+/******************************
+ * Handy conversion routines. *
+ ******************************/
+
+/*
+ * This function clears the previous value of the OCTET STRING (if any)
+ * and then allocates a new memory with the specified content (str/size).
+ * If size = -1, the size of the original string will be determined
+ * using strlen(str).
+ * If str equals to NULL, the function will silently clear the
+ * current contents of the OCTET STRING.
+ * Returns 0 if it was possible to perform operation, -1 otherwise.
+ */
+int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size);
+
+/* Handy conversion from the C string into the OCTET STRING. */
+#define	OCTET_STRING_fromString(s, str)	OCTET_STRING_fromBuf(s, str, -1)
+
+/*
+ * Allocate and fill the new OCTET STRING and return a pointer to the newly
+ * allocated object. NULL is permitted in str: the function will just allocate
+ * empty OCTET STRING.
+ */
+OCTET_STRING_t *OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td,
+                                         const char *str, int size);
+
+/****************************
+ * Internally useful stuff. *
+ ****************************/
+
+typedef struct asn_OCTET_STRING_specifics_s {
+    /*
+     * Target structure description.
+     */
+    unsigned struct_size;   /* Size of the structure */
+    unsigned ctx_offset;    /* Offset of the asn_struct_ctx_t member */
+
+    enum asn_OS_Subvariant {
+        ASN_OSUBV_ANY, /* The open type (ANY) */
+        ASN_OSUBV_BIT, /* BIT STRING */
+        ASN_OSUBV_STR, /* String types, not {BMP,Universal}String  */
+        ASN_OSUBV_U16, /* 16-bit character (BMPString) */
+        ASN_OSUBV_U32  /* 32-bit character (UniversalString) */
+    } subvariant;
+} asn_OCTET_STRING_specifics_t;
+
+extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs;
+
+size_t OCTET_STRING_random_length_constrained(
+    const asn_TYPE_descriptor_t *, const asn_encoding_constraints_t *,
+    size_t max_length);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _OCTET_STRING_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/OPEN_TYPE.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/OPEN_TYPE.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/OPEN_TYPE.h	(working copy)
@@ -0,0 +1,77 @@
+/*-
+ * Copyright (c) 2017-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_OPEN_TYPE_H
+#define ASN_OPEN_TYPE_H
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define OPEN_TYPE_free CHOICE_free
+#define OPEN_TYPE_print CHOICE_print
+#define OPEN_TYPE_compare CHOICE_compare
+#define OPEN_TYPE_constraint CHOICE_constraint
+#define OPEN_TYPE_decode_ber NULL
+#define OPEN_TYPE_encode_der CHOICE_encode_der
+#define OPEN_TYPE_decode_xer NULL
+#define OPEN_TYPE_encode_xer CHOICE_encode_xer
+#define OPEN_TYPE_decode_oer NULL
+#define OPEN_TYPE_encode_oer CHOICE_encode_oer
+#define OPEN_TYPE_decode_uper NULL
+#define OPEN_TYPE_decode_aper NULL
+
+extern asn_TYPE_operation_t asn_OP_OPEN_TYPE;
+
+/*
+ * Decode an Open Type which is potentially constraiend
+ * by the other members of the parent structure.
+ */
+asn_dec_rval_t OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                 const asn_TYPE_descriptor_t *parent_type,
+                                 void *parent_structure,
+                                 const asn_TYPE_member_t *element,
+                                 const void *ptr, size_t size);
+
+asn_dec_rval_t OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                 const asn_TYPE_descriptor_t *parent_type,
+                                 void *parent_structure,
+                                 const asn_TYPE_member_t *element,
+                                 const void *ptr, size_t size);
+
+asn_dec_rval_t OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                 const asn_TYPE_descriptor_t *parent_type,
+                                 void *parent_structure,
+                                 asn_TYPE_member_t *element, const void *ptr,
+                                 size_t size);
+
+asn_dec_rval_t OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                  const asn_TYPE_descriptor_t *parent_type,
+                                  void *parent_structure,
+                                  const asn_TYPE_member_t *element,
+                                  asn_per_data_t *pd);
+
+asn_dec_rval_t OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                  const asn_TYPE_descriptor_t *parent_type,
+                                  void *parent_structure,
+                                  const asn_TYPE_member_t *element,
+                                  asn_per_data_t *pd);
+
+asn_enc_rval_t OPEN_TYPE_encode_uper(
+    const asn_TYPE_descriptor_t *type_descriptor,
+    const asn_per_constraints_t *constraints, const void *struct_ptr,
+    asn_per_outp_t *per_output);
+
+asn_enc_rval_t OPEN_TYPE_encode_aper(
+    const asn_TYPE_descriptor_t *type_descriptor,
+    const asn_per_constraints_t *constraints, const void *struct_ptr,
+    asn_per_outp_t *per_output);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_OPEN_TYPE_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ObjectDescriptor.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ObjectDescriptor.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ObjectDescriptor.h	(working copy)
@@ -0,0 +1,35 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_ObjectDescriptor_H_
+#define	_ObjectDescriptor_H_
+
+#include <GraphicString.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef GraphicString_t ObjectDescriptor_t;  /* Implemented via GraphicString */
+
+extern asn_TYPE_descriptor_t asn_DEF_ObjectDescriptor;
+extern asn_TYPE_operation_t asn_OP_ObjectDescriptor;
+
+#define ObjectDescriptor_free         OCTET_STRING_free
+#define ObjectDescriptor_print        OCTET_STRING_print_utf8
+#define ObjectDescriptor_constraint   asn_generic_unknown_constraint
+#define ObjectDescriptor_decode_ber   OCTET_STRING_decode_ber
+#define ObjectDescriptor_encode_der   OCTET_STRING_encode_der
+#define ObjectDescriptor_decode_xer   OCTET_STRING_decode_xer_utf8
+#define ObjectDescriptor_encode_xer   OCTET_STRING_encode_xer_utf8
+#define ObjectDescriptor_decode_uper  OCTET_STRING_decode_uper
+#define ObjectDescriptor_encode_uper  OCTET_STRING_encode_uper
+#define ObjectDescriptor_decode_aper  OCTET_STRING_decode_aper
+#define ObjectDescriptor_encode_aper  OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ObjectDescriptor_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/PrintableString.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/PrintableString.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/PrintableString.h	(working copy)
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_PrintableString_H_
+#define	_PrintableString_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t PrintableString_t;  /* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_PrintableString;
+extern asn_TYPE_operation_t asn_OP_PrintableString;
+
+asn_constr_check_f PrintableString_constraint;
+
+#define PrintableString_free            OCTET_STRING_free
+#define PrintableString_print           OCTET_STRING_print_utf8
+#define PrintableString_compare         OCTET_STRING_compare
+#define PrintableString_decode_ber      OCTET_STRING_decode_ber
+#define PrintableString_encode_der      OCTET_STRING_encode_der
+#define PrintableString_decode_xer      OCTET_STRING_decode_xer_utf8
+#define PrintableString_encode_xer      OCTET_STRING_encode_xer_utf8
+#define PrintableString_decode_uper     OCTET_STRING_decode_uper
+#define PrintableString_encode_uper     OCTET_STRING_encode_uper
+#define PrintableString_decode_aper     OCTET_STRING_decode_aper
+#define PrintableString_encode_aper     OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PrintableString_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/README
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/README	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/README	(working copy)
@@ -0,0 +1,4 @@
+This directory contains encoder/decoder code for various encoding rules
+(OER, PER, DER, BER, XER) that work with the tables constructed by the compiler.
+The compiler itself does not generate much code. It creates parsing tables
+and then copies (or links) over these files which contain generic codecs.
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/REAL.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/REAL.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/REAL.h	(working copy)
@@ -0,0 +1,67 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_TYPE_REAL_H
+#define	ASN_TYPE_REAL_H
+
+#include <asn_application.h>
+#include <asn_codecs_prim.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef ASN__PRIMITIVE_TYPE_t REAL_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_REAL;
+extern asn_TYPE_operation_t asn_OP_REAL;
+
+asn_struct_print_f REAL_print;
+asn_struct_compare_f REAL_compare;
+oer_type_decoder_f REAL_decode_oer;
+oer_type_encoder_f REAL_encode_oer;
+per_type_decoder_f REAL_decode_uper;
+per_type_encoder_f REAL_encode_uper;
+per_type_decoder_f REAL_decode_aper;
+per_type_encoder_f REAL_encode_aper;
+xer_type_decoder_f REAL_decode_xer;
+xer_type_encoder_f REAL_encode_xer;
+asn_random_fill_f  REAL_random_fill;
+
+#define REAL_free          ASN__PRIMITIVE_TYPE_free,
+#define REAL_constraint    asn_generic_no_constraint
+#define REAL_decode_ber    ber_decode_primitive
+#define REAL_encode_der    der_encode_primitive
+
+/***********************************
+ * Some handy conversion routines. *
+ ***********************************/
+
+ssize_t REAL__dump(double d, int canonical, asn_app_consume_bytes_f *cb, void *app_key);
+
+/*
+ * Convert between native double type and REAL representation (DER).
+ * RETURN VALUES:
+ *  0: Value converted successfully
+ * -1: An error occured while converting the value: invalid format.
+ */
+int asn_REAL2double(const REAL_t *real_ptr, double *d);
+int asn_double2REAL(REAL_t *real_ptr, double d);
+
+/*
+ * Downcast double to float while checking that no overflow occurs.
+ * This allows stricter control of the input data.
+ * RETURN VALUES:
+ *  0: The conversion was successful (perhaps with a loss of precision)
+ * -1: The conversion created overflow into infinities.
+ * The (outcome) is ALWAYS set to a value you'd expect from the
+ * standard silent float to double conversion behavior.
+ */
+int asn_double2float(double d, float *outcome);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_TYPE_REAL_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/RELATIVE-OID.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/RELATIVE-OID.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/RELATIVE-OID.h	(working copy)
@@ -0,0 +1,53 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_RELATIVE_OID_H_
+#define	_RELATIVE_OID_H_
+
+#include <OBJECT_IDENTIFIER.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Implemented via OBJECT IDENTIFIER */
+typedef OBJECT_IDENTIFIER_t RELATIVE_OID_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_RELATIVE_OID;
+extern asn_TYPE_operation_t asn_OP_RELATIVE_OID;
+
+asn_struct_print_f RELATIVE_OID_print;
+xer_type_decoder_f RELATIVE_OID_decode_xer;
+xer_type_encoder_f RELATIVE_OID_encode_xer;
+asn_random_fill_f  RELATIVE_OID_random_fill;
+
+#define RELATIVE_OID_free         ASN__PRIMITIVE_TYPE_free
+#define RELATIVE_OID_compare      OCTET_STRING_compare
+#define RELATIVE_OID_constraint   asn_generic_no_constraint
+#define RELATIVE_OID_decode_ber   ber_decode_primitive
+#define RELATIVE_OID_encode_der   der_encode_primitive
+#define RELATIVE_OID_decode_oer   oer_decode_primitive
+#define RELATIVE_OID_encode_oer   oer_encode_primitive
+#define RELATIVE_OID_decode_uper  OCTET_STRING_decode_uper
+#define RELATIVE_OID_encode_uper  OCTET_STRING_encode_uper
+#define RELATIVE_OID_decode_aper  OCTET_STRING_decode_aper
+#define RELATIVE_OID_encode_aper  OCTET_STRING_encode_aper
+
+/**********************************
+ * Some handy conversion routines *
+ **********************************/
+
+/* See OBJECT_IDENTIFIER_get_arcs() function in OBJECT_IDENTIFIER.h */
+ssize_t RELATIVE_OID_get_arcs(const RELATIVE_OID_t *, asn_oid_arc_t *arcs,
+                              size_t arcs_count);
+
+/* See OBJECT_IDENTIFIER_set_arcs() function in OBJECT_IDENTIFIER.h */
+int RELATIVE_OID_set_arcs(RELATIVE_OID_t *, const asn_oid_arc_t *arcs,
+                          size_t arcs_count);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RELATIVE_OID_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/T61String.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/T61String.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/T61String.h	(working copy)
@@ -0,0 +1,36 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_T61String_H_
+#define	_T61String_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t T61String_t;	/* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_T61String;
+extern asn_TYPE_operation_t asn_OP_T61String;
+
+#define T61String_free          OCTET_STRING_free
+#define T61String_print         OCTET_STRING_print
+#define T61String_compare       OCTET_STRING_compare
+#define T61String_constraint    asn_generic_unknown_constraint
+#define T61String_decode_ber    OCTET_STRING_decode_ber
+#define T61String_encode_der    OCTET_STRING_encode_der
+#define T61String_decode_xer    OCTET_STRING_decode_xer_hex
+#define T61String_encode_xer    OCTET_STRING_encode_xer
+#define T61String_decode_uper   OCTET_STRING_decode_uper
+#define T61String_encode_uper   OCTET_STRING_encode_uper
+#define T61String_decode_aper   OCTET_STRING_decode_aper
+#define T61String_encode_aper   OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _T61String_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/TeletexString.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/TeletexString.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/TeletexString.h	(working copy)
@@ -0,0 +1,36 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_TeletexString_H_
+#define	_TeletexString_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t TeletexString_t;	/* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_TeletexString;
+extern asn_TYPE_operation_t asn_OP_TeletexString;
+
+#define TeletexString_free          OCTET_STRING_free
+#define TeletexString_print         OCTET_STRING_print
+#define TeletexString_compare       OCTET_STRING_compare
+#define TeletexString_constraint    asn_generic_unknown_constraint
+#define TeletexString_decode_ber    OCTET_STRING_decode_ber
+#define TeletexString_encode_der    OCTET_STRING_encode_der
+#define TeletexString_decode_xer    OCTET_STRING_decode_xer_hex
+#define TeletexString_encode_xer    OCTET_STRING_encode_xer
+#define TeletexString_decode_uper   OCTET_STRING_decode_uper
+#define TeletexString_encode_uper   OCTET_STRING_encode_uper
+#define TeletexString_decode_aper   OCTET_STRING_decode_aper
+#define TeletexString_encode_aper   OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _TeletexString_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/UTCTime.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/UTCTime.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/UTCTime.h	(working copy)
@@ -0,0 +1,50 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_UTCTime_H_
+#define	_UTCTime_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t UTCTime_t;  /* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_UTCTime;
+extern asn_TYPE_operation_t asn_OP_UTCTime;
+
+asn_struct_print_f UTCTime_print;
+asn_struct_compare_f UTCTime_compare;
+asn_constr_check_f UTCTime_constraint;
+xer_type_encoder_f UTCTime_encode_xer;
+asn_random_fill_f  UTCTime_random_fill;
+
+#define UTCTime_free         OCTET_STRING_free
+#define UTCTime_decode_ber   OCTET_STRING_decode_ber
+#define UTCTime_encode_der   OCTET_STRING_encode_der
+#define UTCTime_decode_xer   OCTET_STRING_decode_xer_utf8
+#define UTCTime_decode_uper  OCTET_STRING_decode_uper
+#define UTCTime_encode_uper  OCTET_STRING_encode_uper
+#define UTCTime_decode_aper  OCTET_STRING_decode_aper
+#define UTCTime_encode_aper  OCTET_STRING_encode_aper
+
+/***********************
+ * Some handy helpers. *
+ ***********************/
+
+struct tm;	/* <time.h> */
+
+/* See asn_GT2time() in GeneralizedTime.h */
+time_t asn_UT2time(const UTCTime_t *, struct tm *_optional_tm4fill, int as_gmt);
+
+/* See asn_time2GT() in GeneralizedTime.h */
+UTCTime_t *asn_time2UT(UTCTime_t *__opt_ut, const struct tm *, int force_gmt);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _UTCTime_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/UTF8String.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/UTF8String.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/UTF8String.h	(working copy)
@@ -0,0 +1,63 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_UTF8String_H_
+#define	_UTF8String_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t UTF8String_t;	/* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_UTF8String;
+extern asn_TYPE_operation_t asn_OP_UTF8String;
+
+asn_struct_print_f UTF8String_print;
+asn_constr_check_f UTF8String_constraint;
+asn_random_fill_f  UTF8String_random_fill;
+
+#define UTF8String_free         OCTET_STRING_free
+#define UTF8String_compare      OCTET_STRING_compare
+#define UTF8String_constraint   UTF8String_constraint
+#define UTF8String_decode_ber   OCTET_STRING_decode_ber
+#define UTF8String_encode_der   OCTET_STRING_encode_der
+#define UTF8String_decode_xer   OCTET_STRING_decode_xer_utf8
+#define UTF8String_encode_xer   OCTET_STRING_encode_xer_utf8
+#define UTF8String_decode_uper  OCTET_STRING_decode_uper
+#define UTF8String_encode_uper  OCTET_STRING_encode_uper
+#define UTF8String_decode_aper  OCTET_STRING_decode_aper
+#define UTF8String_encode_aper  OCTET_STRING_encode_aper
+
+/*
+ * Returns length of the given UTF-8 string in characters,
+ * or a negative error code:
+ * -1:	UTF-8 sequence truncated 
+ * -2:	Illegal UTF-8 sequence start
+ * -3:	Continuation expectation failed
+ * -4:	Not minimal length encoding
+ * -5:	Invalid arguments
+ */
+ssize_t UTF8String_length(const UTF8String_t *st);
+
+/*
+ * Convert the UTF-8 string into a sequence of wide characters.
+ * Returns the number of characters necessary.
+ * Returned value might be greater than dstlen.
+ * In case of conversion error, 0 is returned.
+ * 
+ * If st points to a valid UTF-8 string, calling
+ * 	UTF8String_to_wcs(st, 0, 0);
+ * is equivalent to
+ * 	UTF8String_length(const UTF8String_t *st);
+ */
+size_t UTF8String_to_wcs(const UTF8String_t *st, uint32_t *dst, size_t dstlen);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _UTF8String_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/UniversalString.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/UniversalString.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/UniversalString.h	(working copy)
@@ -0,0 +1,38 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_UniversalString_H_
+#define	_UniversalString_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t UniversalString_t;  /* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_UniversalString;
+extern asn_TYPE_operation_t asn_OP_UniversalString;
+extern asn_OCTET_STRING_specifics_t asn_SPC_UniversalString_specs;
+
+asn_struct_print_f UniversalString_print;	/* Human-readable output */
+asn_constr_check_f UniversalString_constraint;
+xer_type_decoder_f UniversalString_decode_xer;
+xer_type_encoder_f UniversalString_encode_xer;
+
+#define UniversalString_free            OCTET_STRING_free
+#define UniversalString_compare         OCTET_STRING_compare
+#define UniversalString_decode_ber      OCTET_STRING_decode_ber
+#define UniversalString_encode_der      OCTET_STRING_encode_der
+#define UniversalString_decode_uper     OCTET_STRING_decode_uper
+#define UniversalString_encode_uper     OCTET_STRING_encode_uper
+#define UniversalString_decode_aper     OCTET_STRING_decode_aper
+#define UniversalString_encode_aper     OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _UniversalString_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/VideotexString.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/VideotexString.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/VideotexString.h	(working copy)
@@ -0,0 +1,36 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_VideotexString_H_
+#define	_VideotexString_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t VideotexString_t;  /* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_VideotexString;
+extern asn_TYPE_operation_t asn_OP_VideotexString;
+
+#define VideotexString_free         OCTET_STRING_free
+#define VideotexString_print        OCTET_STRING_print
+#define VideotexString_compare      OCTET_STRING_compare
+#define VideotexString_constraint   asn_generic_unknown_constraint
+#define VideotexString_decode_ber   OCTET_STRING_decode_ber
+#define VideotexString_encode_der   OCTET_STRING_encode_der
+#define VideotexString_decode_xer   OCTET_STRING_decode_xer_hex
+#define VideotexString_encode_xer   OCTET_STRING_encode_xer
+#define VideotexString_decode_uper  OCTET_STRING_decode_uper
+#define VideotexString_encode_uper  OCTET_STRING_encode_uper
+#define VideotexString_decode_aper  OCTET_STRING_decode_aper
+#define VideotexString_encode_aper  OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _VideotexString_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/VisibleString.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/VisibleString.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/VisibleString.h	(working copy)
@@ -0,0 +1,38 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_VisibleString_H_
+#define	_VisibleString_H_
+
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t VisibleString_t;  /* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_VisibleString;
+extern asn_TYPE_operation_t asn_OP_VisibleString;
+
+asn_constr_check_f VisibleString_constraint;
+
+#define VisibleString_free          OCTET_STRING_free
+#define VisibleString_print         OCTET_STRING_print
+#define VisibleString_compare       OCTET_STRING_compare
+#define VisibleString_constraint    VisibleString_constraint
+#define VisibleString_decode_ber    OCTET_STRING_decode_ber
+#define VisibleString_encode_der    OCTET_STRING_encode_der
+#define VisibleString_decode_xer    OCTET_STRING_decode_xer_hex
+#define VisibleString_encode_xer    OCTET_STRING_encode_xer
+#define VisibleString_decode_uper   OCTET_STRING_decode_uper
+#define VisibleString_encode_uper   OCTET_STRING_encode_uper
+#define VisibleString_decode_aper   OCTET_STRING_decode_aper
+#define VisibleString_encode_aper   OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _VisibleString_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_SEQUENCE_OF.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_SEQUENCE_OF.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_SEQUENCE_OF.h	(working copy)
@@ -0,0 +1,52 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_SEQUENCE_OF_H
+#define	ASN_SEQUENCE_OF_H
+
+#include <asn_SET_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * SEQUENCE OF is the same as SET OF with a tiny difference:
+ * the delete operation preserves the initial order of elements
+ * and thus MAY operate in non-constant time.
+ */
+#define	A_SEQUENCE_OF(type)	A_SET_OF(type)
+
+#define	ASN_SEQUENCE_ADD(headptr, ptr)		\
+	asn_sequence_add((headptr), (ptr))
+
+/***********************************************
+ * Implementation of the SEQUENCE OF structure.
+ */
+
+#define	asn_sequence_add	asn_set_add
+#define	asn_sequence_empty	asn_set_empty
+
+/*
+ * Delete the element from the set by its number (base 0).
+ * This is NOT a constant-time operation.
+ * The order of elements is preserved.
+ * If _do_free is given AND the (*free) is initialized, the element
+ * will be freed using the custom (*free) function as well.
+ */
+void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free);
+
+/*
+ * Cope with different conversions requirements to/from void in C and C++.
+ * This is mostly useful for support library.
+ */
+typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_;
+#define _A_SEQUENCE_FROM_VOID(ptr)	((asn_anonymous_sequence_ *)(ptr))
+#define _A_CSEQUENCE_FROM_VOID(ptr) 	((const asn_anonymous_sequence_ *)(ptr))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_SEQUENCE_OF_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_SET_OF.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_SET_OF.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_SET_OF.h	(working copy)
@@ -0,0 +1,72 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_SET_OF_H
+#define	ASN_SET_OF_H
+
+#ifdef __cplusplus
+#define A_SET_OF(type)                   \
+    struct {                             \
+        type **array;                    \
+        int count; /* Meaningful size */ \
+        int size;  /* Allocated size */  \
+        void (*free)(decltype(*array));  \
+    }
+#else   /* C */
+#define A_SET_OF(type)                   \
+    struct {                             \
+        type **array;                    \
+        int count; /* Meaningful size */ \
+        int size;  /* Allocated size */  \
+        void (*free)(type *);    \
+    }
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define	ASN_SET_ADD(headptr, ptr)		\
+	asn_set_add((headptr), (ptr))
+
+/*******************************************
+ * Implementation of the SET OF structure.
+ */
+
+/*
+ * Add another structure into the set by its pointer.
+ * RETURN VALUES:
+ * 0 for success and -1/errno for failure.
+ */
+int  asn_set_add(void *asn_set_of_x, void *ptr);
+
+/*
+ * Delete the element from the set by its number (base 0).
+ * This is a constant-time operation. The order of elements before the
+ * deleted ones is guaranteed, the order of elements after the deleted
+ * one is NOT guaranteed.
+ * If _do_free is given AND the (*free) is initialized, the element
+ * will be freed using the custom (*free) function as well.
+ */
+void asn_set_del(void *asn_set_of_x, int number, int _do_free);
+
+/*
+ * Empty the contents of the set. Will free the elements, if (*free) is given.
+ * Will NOT free the set itself.
+ */
+void asn_set_empty(void *asn_set_of_x);
+
+/*
+ * Cope with different conversions requirements to/from void in C and C++.
+ * This is mostly useful for support library.
+ */
+typedef A_SET_OF(void) asn_anonymous_set_;
+#define _A_SET_FROM_VOID(ptr)		((asn_anonymous_set_ *)(ptr))
+#define _A_CSET_FROM_VOID(ptr)		((const asn_anonymous_set_ *)(ptr))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_SET_OF_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_application.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_application.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_application.h	(working copy)
@@ -0,0 +1,171 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * Application-level ASN.1 callbacks.
+ */
+#ifndef	ASN_APPLICATION_H
+#define	ASN_APPLICATION_H
+
+#include "asn_system.h"		/* for platform-dependent types */
+#include "asn_codecs.h"		/* for ASN.1 codecs specifics */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * A selection of ASN.1 Transfer Syntaxes to use with generalized
+ * encoders and decoders declared further in this .h file.
+ */
+enum asn_transfer_syntax {
+    /* Avoid appearance of a default transfer syntax. */
+    ATS_INVALID = 0,
+    /* Plaintext output (not conforming to any standard), for debugging. */
+    ATS_NONSTANDARD_PLAINTEXT,
+    /* Returns a randomly generatede structure. */
+    ATS_RANDOM,
+    /*
+     * X.690:
+     * BER: Basic Encoding Rules.
+     * DER: Distinguished Encoding Rules.
+     * CER: Canonical Encoding Rules.
+     * DER and CER are more strict variants of BER.
+     */
+    ATS_BER,
+    ATS_DER,
+    ATS_CER, /* Only decoding is supported */
+    /*
+     * X.696:
+     * OER: Octet Encoding Rules.
+     * CANONICAL-OER is a more strict variant of BASIC-OER.
+     */
+    ATS_BASIC_OER,
+    ATS_CANONICAL_OER,
+    /*
+     * X.691:
+     * PER: Packed Encoding Rules.
+     * CANONICAL-PER is a more strict variant of BASIC-PER.
+     * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1).
+     */
+    ATS_UNALIGNED_BASIC_PER,
+    ATS_UNALIGNED_CANONICAL_PER,
+    ATS_ALIGNED_BASIC_PER,
+    ATS_ALIGNED_CANONICAL_PER,
+    /*
+     * X.693:
+     * XER: XML Encoding Rules.
+     * CANONICAL-XER is a more strict variant of BASIC-XER.
+     */
+    ATS_BASIC_XER,
+    ATS_CANONICAL_XER
+};
+
+/*
+ * A generic encoder for any supported transfer syntax.
+ * RETURN VALUES:
+ * The (.encoded) field of the return value is REDEFINED to mean the following:
+ * >=0: The computed size of the encoded data. Can exceed the (buffer_size).
+ *  -1: Error encoding the structure. See the error code in (errno):
+ *      EINVAL: Incorrect parameters to the function, such as NULLs.
+ *      ENOENT: Encoding transfer syntax is not defined (for this type).
+ *      EBADF:  The structure has invalid form or content constraint failed.
+ *      The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate
+ *      values at the place of failure, if at all possible.
+ * WARNING: The (.encoded) field of the return value can exceed the buffer_size.
+ * This is similar to snprintf(3) contract which might return values
+ * greater than the buffer size.
+ */
+asn_enc_rval_t asn_encode_to_buffer(
+    const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */
+    enum asn_transfer_syntax,
+    const struct asn_TYPE_descriptor_s *type_to_encode,
+    const void *structure_to_encode, void *buffer, size_t buffer_size);
+
+/*
+ * A variant of asn_encode_to_buffer() with automatically allocated buffer.
+ * RETURN VALUES:
+ * On success, returns a newly allocated (.buffer) containing the whole message.
+ * The message size is returned in (.result.encoded).
+ * On failure:
+ *  (.buffer) is NULL,
+ *  (.result.encoded) as in asn_encode_to_buffer(),
+ *  The errno codes as in asn_encode_to_buffer(), plus the following:
+ *      ENOMEM: Memory allocation failed due to system or internal limits.
+ * The user is responsible for freeing the (.buffer).
+ */
+typedef struct asn_encode_to_new_buffer_result_s {
+    void *buffer;   /* NULL if failed to encode. */
+    asn_enc_rval_t result;
+} asn_encode_to_new_buffer_result_t;
+asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer(
+    const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */
+    enum asn_transfer_syntax,
+    const struct asn_TYPE_descriptor_s *type_to_encode,
+    const void *structure_to_encode);
+
+
+/*
+ * Generic type of an application-defined callback to return various
+ * types of data to the application.
+ * EXPECTED RETURN VALUES:
+ *  -1: Failed to consume bytes. Abort the mission.
+ * Non-negative return values indicate success, and ignored.
+ */
+typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size,
+                                     void *application_specific_key);
+
+
+/*
+ * A generic encoder for any supported transfer syntax.
+ * Returns the comprehensive encoding result descriptor (see asn_codecs.h).
+ * RETURN VALUES:
+ * The negative (.encoded) field of the return values is accompanied with the
+ * following error codes (errno):
+ *      EINVAL: Incorrect parameters to the function, such as NULLs.
+ *      ENOENT: Encoding transfer syntax is not defined (for this type).
+ *      EBADF:  The structure has invalid form or content constraint failed.
+ *      EIO:    The (callback) has returned negative value during encoding.
+ */
+asn_enc_rval_t asn_encode(
+    const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */
+    enum asn_transfer_syntax,
+    const struct asn_TYPE_descriptor_s *type_to_encode,
+    const void *structure_to_encode,
+    asn_app_consume_bytes_f *callback, void *callback_key);
+
+
+/*
+ * A generic decoder for any supported transfer syntax.
+ */
+asn_dec_rval_t asn_decode(
+    const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax,
+    const struct asn_TYPE_descriptor_s *type_to_decode,
+    void **structure_ptr, /* Pointer to a target structure's pointer */
+    const void *buffer,   /* Data to be decoded */
+    size_t size           /* Size of that buffer */
+);
+
+
+/*
+ * A callback of this type is called whenever constraint validation fails
+ * on some ASN.1 type. See "constraints.h" for more details on constraint
+ * validation.
+ * This callback specifies a descriptor of the ASN.1 type which failed
+ * the constraint check, as well as human readable message on what
+ * particular constraint has failed.
+ */
+typedef void (asn_app_constraint_failed_f)(void *application_specific_key,
+	const struct asn_TYPE_descriptor_s *type_descriptor_which_failed,
+	const void *structure_which_failed_ptr,
+	const char *error_message_format, ...) CC_PRINTFLIKE(4, 5);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#include "constr_TYPE.h"	/* for asn_TYPE_descriptor_t */
+
+#endif	/* ASN_APPLICATION_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_bit_data.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_bit_data.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_bit_data.h	(working copy)
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2005-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_BIT_DATA
+#define	ASN_BIT_DATA
+
+#include <asn_system.h>		/* Platform-specific types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * This structure describes a position inside an incoming PER bit stream.
+ */
+typedef struct asn_bit_data_s {
+  const uint8_t *buffer;  /* Pointer to the octet stream */
+         size_t  nboff;   /* Bit offset to the meaningful bit */
+         size_t  nbits;   /* Number of bits in the stream */
+         size_t  moved;   /* Number of bits moved through this bit stream */
+  int (*refill)(struct asn_bit_data_s *);
+  void *refill_key;
+} asn_bit_data_t;
+
+/*
+ * Create a contiguous non-refillable bit data structure.
+ * Can be freed by FREEMEM().
+ */
+asn_bit_data_t *asn_bit_data_new_contiguous(const void *data, size_t size_bits);
+
+/*
+ * Extract a small number of bits (<= 31) from the specified PER data pointer.
+ * This function returns -1 if the specified number of bits could not be
+ * extracted due to EOD or other conditions.
+ */
+int32_t asn_get_few_bits(asn_bit_data_t *, int get_nbits);
+
+/* Undo the immediately preceeding "get_few_bits" operation */
+void asn_get_undo(asn_bit_data_t *, int get_nbits);
+
+/*
+ * Extract a large number of bits from the specified PER data pointer.
+ * This function returns -1 if the specified number of bits could not be
+ * extracted due to EOD or other conditions.
+ */
+int asn_get_many_bits(asn_bit_data_t *, uint8_t *dst, int right_align,
+			int get_nbits);
+
+/* Non-thread-safe debugging function, don't use it */
+char *asn_bit_data_string(asn_bit_data_t *);
+
+/*
+ * This structure supports forming bit output.
+ */
+typedef struct asn_bit_outp_s {
+	uint8_t *buffer;	/* Pointer into the (tmpspace) */
+	size_t nboff;		/* Bit offset to the meaningful bit */
+	size_t nbits;		/* Number of bits left in (tmpspace) */
+	uint8_t tmpspace[32];	/* Preliminary storage to hold data */
+	int (*output)(const void *data, size_t size, void *op_key);
+	void *op_key;		/* Key for (output) data callback */
+	size_t flushed_bytes;	/* Bytes already flushed through (output) */
+} asn_bit_outp_t;
+
+/* Output a small number of bits (<= 31) */
+int asn_put_few_bits(asn_bit_outp_t *, uint32_t bits, int obits);
+
+/* Output a large number of bits */
+int asn_put_many_bits(asn_bit_outp_t *, const uint8_t *src, int put_nbits);
+
+/*
+ * Flush whole bytes (0 or more) through (outper) member.
+ * The least significant bits which are not used are guaranteed to be set to 0.
+ * Returns -1 if callback returns -1. Otherwise, 0.
+ */
+int asn_put_aligned_flush(asn_bit_outp_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_BIT_DATA */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_codecs.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_codecs.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_codecs.h	(working copy)
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_CODECS_H
+#define	ASN_CODECS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/*
+ * This structure defines a set of parameters that may be passed
+ * to every ASN.1 encoder or decoder function.
+ * WARNING: if max_stack_size member is set, and you are calling the
+ *   function pointers of the asn_TYPE_descriptor_t directly,
+ *   this structure must be ALLOCATED ON THE STACK!
+ *   If you can't always satisfy this requirement, use ber_decode(),
+ *   xer_decode() and uper_decode() functions instead.
+ */
+typedef struct asn_codec_ctx_s {
+	/*
+	 * Limit the decoder routines to use no (much) more stack than a given
+	 * number of bytes. Most of decoders are stack-based, and this
+	 * would protect against stack overflows if the number of nested
+	 * encodings is high.
+	 * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based,
+	 * and are safe from this kind of overflow.
+	 * A value from getrlimit(RLIMIT_STACK) may be used to initialize
+	 * this variable. Be careful in multithreaded environments, as the
+	 * stack size is rather limited.
+	 */
+	size_t  max_stack_size; /* 0 disables stack bounds checking */
+} asn_codec_ctx_t;
+
+/*
+ * Type of the return value of the encoding functions (der_encode, xer_encode).
+ */
+typedef struct asn_enc_rval_s {
+	/*
+	 * Number of bytes encoded.
+	 * -1 indicates failure to encode the structure.
+	 * In this case, the members below this one are meaningful.
+	 */
+	ssize_t encoded;
+
+	/*
+	 * Members meaningful when (encoded == -1), for post mortem analysis.
+	 */
+
+	/* Type which cannot be encoded */
+	const struct asn_TYPE_descriptor_s *failed_type;
+
+	/* Pointer to the structure of that type */
+	const void *structure_ptr;
+} asn_enc_rval_t;
+#define	ASN__ENCODE_FAILED do {					\
+	asn_enc_rval_t tmp_error;				\
+	tmp_error.encoded = -1;					\
+	tmp_error.failed_type = td;				\
+	tmp_error.structure_ptr = sptr;				\
+	ASN_DEBUG("Failed to encode element %s", td ? td->name : "");	\
+	return tmp_error;					\
+} while(0)
+#define	ASN__ENCODED_OK(rval) do {				\
+	rval.structure_ptr = 0;					\
+	rval.failed_type = 0;					\
+	return rval;						\
+} while(0)
+
+/*
+ * Type of the return value of the decoding functions (ber_decode, xer_decode)
+ * 
+ * Please note that the number of consumed bytes is ALWAYS meaningful,
+ * even if code==RC_FAIL. This is to indicate the number of successfully
+ * decoded bytes, hence providing a possibility to fail with more diagnostics
+ * (i.e., print the offending remainder of the buffer).
+ */
+enum asn_dec_rval_code_e {
+	RC_OK,		/* Decoded successfully */
+	RC_WMORE,	/* More data expected, call again */
+	RC_FAIL		/* Failure to decode data */
+};
+typedef struct asn_dec_rval_s {
+	enum asn_dec_rval_code_e code;	/* Result code */
+	size_t consumed;		/* Number of bytes consumed */
+} asn_dec_rval_t;
+#define	ASN__DECODE_FAILED do {					\
+	asn_dec_rval_t tmp_error;				\
+	tmp_error.code = RC_FAIL;				\
+	tmp_error.consumed = 0;					\
+	ASN_DEBUG("Failed to decode element %s", td ? td->name : "");	\
+	return tmp_error;					\
+} while(0)
+#define	ASN__DECODE_STARVED do {				\
+	asn_dec_rval_t tmp_error;				\
+	tmp_error.code = RC_WMORE;				\
+	tmp_error.consumed = 0;					\
+	return tmp_error;					\
+} while(0)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_CODECS_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_codecs_prim.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_codecs_prim.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_codecs_prim.h	(working copy)
@@ -0,0 +1,51 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_CODECS_PRIM_H
+#define	ASN_CODECS_PRIM_H
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct ASN__PRIMITIVE_TYPE_s {
+    uint8_t *buf;   /* Buffer with consecutive primitive encoding bytes */
+    size_t size;    /* Size of the buffer */
+} ASN__PRIMITIVE_TYPE_t;	/* Do not use this type directly! */
+
+asn_struct_free_f ASN__PRIMITIVE_TYPE_free;
+ber_type_decoder_f ber_decode_primitive;
+der_type_encoder_f der_encode_primitive;
+
+/*
+ * A callback specification for the xer_decode_primitive() function below.
+ */
+enum xer_pbd_rval {
+    XPBD_SYSTEM_FAILURE,  /* System failure (memory shortage, etc) */
+    XPBD_DECODER_LIMIT,   /* Hit some decoder limitation or deficiency */
+    XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */
+    XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */
+    XPBD_BODY_CONSUMED    /* Body is recognized and consumed */
+};
+typedef enum xer_pbd_rval(xer_primitive_body_decoder_f)(
+    const asn_TYPE_descriptor_t *td, void *struct_ptr, const void *chunk_buf,
+    size_t chunk_size);
+
+/*
+ * Specific function to decode simple primitive types.
+ * Also see xer_decode_general() in xer_decoder.h
+ */
+asn_dec_rval_t xer_decode_primitive(
+    const asn_codec_ctx_t *opt_codec_ctx,
+    const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr,
+    size_t struct_size, const char *opt_mname, const void *buf_ptr, size_t size,
+    xer_primitive_body_decoder_f *prim_body_decoder);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_CODECS_PRIM_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_internal.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_internal.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_internal.h	(working copy)
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * Declarations internally useful for the ASN.1 support code.
+ */
+#ifndef	ASN_INTERNAL_H
+#define	ASN_INTERNAL_H
+#define __EXTENSIONS__          /* for Sun */
+
+#include "asn_application.h"	/* Application-visible API */
+
+#ifndef	__NO_ASSERT_H__		/* Include assert.h only for internal use. */
+#include <assert.h>		/* for assert() macro */
+#endif
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/* Environment version might be used to avoid running with the old library */
+#define	ASN1C_ENVIRONMENT_VERSION	923	/* Compile-time version */
+int get_asn1c_environment_version(void);	/* Run-time version */
+
+#define	CALLOC(nmemb, size)	calloc(nmemb, size)
+#define	MALLOC(size)		malloc(size)
+#define	REALLOC(oldptr, size)	realloc(oldptr, size)
+#define	FREEMEM(ptr)		free(ptr)
+
+#define	asn_debug_indent	0
+#define ASN_DEBUG_INDENT_ADD(i) do{}while(0)
+
+#ifdef  EMIT_ASN_DEBUG
+#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG"
+#define ASN_EMIT_DEBUG  EMIT_ASN_DEBUG
+#endif
+
+/*
+ * A macro for debugging the ASN.1 internals.
+ * You may enable or override it.
+ */
+#ifndef	ASN_DEBUG	/* If debugging code is not defined elsewhere... */
+#if	ASN_EMIT_DEBUG == 1	/* And it was asked to emit this code... */
+#if __STDC_VERSION__ >= 199901L
+#ifdef	ASN_THREAD_SAFE
+/* Thread safety requires sacrifice in output indentation:
+ * Retain empty definition of ASN_DEBUG_INDENT_ADD. */
+#else	/* !ASN_THREAD_SAFE */
+#undef  ASN_DEBUG_INDENT_ADD
+#undef  asn_debug_indent
+int asn_debug_indent;
+#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0)
+#endif	/* ASN_THREAD_SAFE */
+#define	ASN_DEBUG(fmt, args...)	do {			\
+		int adi = asn_debug_indent;		\
+		while(adi--) fprintf(stderr, " ");	\
+		fprintf(stderr, fmt, ##args);		\
+		fprintf(stderr, " (%s:%d)\n",		\
+			__FILE__, __LINE__);		\
+	} while(0)
+#else	/* !C99 */
+void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...);
+#define	ASN_DEBUG	ASN_DEBUG_f
+#endif	/* C99 */
+#else	/* ASN_EMIT_DEBUG != 1 */
+#if __STDC_VERSION__ >= 199901L
+#define ASN_DEBUG(...) do{}while(0)
+#else   /* not C99 */
+static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; }
+#endif  /* C99 or better */
+#endif	/* ASN_EMIT_DEBUG */
+#endif	/* ASN_DEBUG */
+
+/*
+ * Print to a callback.
+ * The callback is expected to return negative values on error.
+ * 0 and positive values are treated as success.
+ * RETURN VALUES:
+ *  -1: Failed to format or invoke the callback.
+ *  >0: Size of the data that got delivered to the callback.
+ */
+ssize_t CC_PRINTFLIKE(3, 4)
+asn__format_to_callback(
+    int (*callback)(const void *, size_t, void *key), void *key,
+    const char *fmt, ...);
+
+/*
+ * Invoke the application-supplied callback and fail, if something is wrong.
+ */
+#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0)
+#define ASN__E_CALLBACK(size, foo) \
+    do {                           \
+        if(foo) goto cb_failed;    \
+        er.encoded += (size);      \
+    } while(0)
+#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size))
+#define ASN__CALLBACK2(buf1, size1, buf2, size2) \
+    ASN__E_CALLBACK((size1) + (size2),           \
+                    ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2))
+#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3)          \
+    ASN__E_CALLBACK((size1) + (size2) + (size3),                       \
+                    ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \
+                        || ASN__E_cbc(buf3, size3))
+
+#define ASN__TEXT_INDENT(nl, level)                                          \
+    do {                                                                     \
+        int tmp_level = (level);                                             \
+        int tmp_nl = ((nl) != 0);                                            \
+        int tmp_i;                                                           \
+        if(tmp_nl) ASN__CALLBACK("\n", 1);                                   \
+        if(tmp_level < 0) tmp_level = 0;                                     \
+        for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK("    ", 4); \
+    } while(0)
+
+#define	_i_INDENT(nl)	do {                        \
+        int tmp_i;                                  \
+        if((nl) && cb("\n", 1, app_key) < 0)        \
+            return -1;                              \
+        for(tmp_i = 0; tmp_i < ilevel; tmp_i++)     \
+            if(cb("    ", 4, app_key) < 0)          \
+                return -1;                          \
+    } while(0)
+
+/*
+ * Check stack against overflow, if limit is set.
+ */
+#define	ASN__DEFAULT_STACK_MAX	(30000)
+static int CC_NOTUSED
+ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) {
+	if(ctx && ctx->max_stack_size) {
+
+		/* ctx MUST be allocated on the stack */
+		ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx);
+		if(usedstack > 0) usedstack = -usedstack; /* grows up! */
+
+		/* double negative required to avoid int wrap-around */
+		if(usedstack < -(ptrdiff_t)ctx->max_stack_size) {
+			ASN_DEBUG("Stack limit %ld reached",
+				(long)ctx->max_stack_size);
+			return -1;
+		}
+	}
+	return 0;
+}
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* ASN_INTERNAL_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_ioc.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_ioc.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_ioc.h	(working copy)
@@ -0,0 +1,51 @@
+/*
+ * Run-time support for Information Object Classes.
+ * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_IOC_H
+#define	ASN_IOC_H
+
+#include <asn_system.h>		/* Platform-specific types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;
+struct asn_ioc_cell_s;
+
+/*
+ * X.681, #13
+ */
+typedef struct asn_ioc_set_s {
+    size_t rows_count;
+    size_t columns_count;
+    const struct asn_ioc_cell_s *rows;
+} asn_ioc_set_t;
+
+
+typedef struct asn_ioc_cell_s {
+    const char *field_name; /* Is equal to corresponding column_name */
+    enum {
+        aioc__undefined = 0,
+        aioc__value,
+        aioc__type,
+        aioc__open_type,
+    } cell_kind;
+    struct asn_TYPE_descriptor_s *type_descriptor;
+    const void *value_sptr;
+    struct {
+        size_t types_count;
+        struct {
+            unsigned choice_position;
+        } *types;
+    } open_type;
+} asn_ioc_cell_t;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN_IOC_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_random_fill.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_random_fill.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_random_fill.h	(working copy)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN_RANDOM_FILL
+#define	ASN_RANDOM_FILL
+
+/* Forward declarations */
+struct asn_TYPE_descriptor_s;
+struct asn_encoding_constraints_s;
+
+/*
+ * Initialize a structure with random data according to the type specification
+ * and optional member constraints.
+ * ARGUMENTS:
+ *  (max_length)        - See (approx_max_length_limit).
+ *  (memb_constraints)  - Member constraints, if exist.
+ *                        The type can be constrained differently according
+ *                        to PER and OER specifications, so we find a value
+ *                        at the intersection of these constraints.
+ * In case the return differs from ARFILL_OK, the (struct_ptr) contents
+ * and (current_length) value remain in their original state.
+ */
+typedef struct asn_random_fill_result_s {
+    enum {
+        ARFILL_FAILED = -1, /* System error (memory?) */
+        ARFILL_OK = 0,      /* Initialization succeeded */
+        ARFILL_SKIPPED = 1  /* Not done due to (length?) constraint */
+    } code;
+    size_t length; /* Approximate number of bytes created. */
+} asn_random_fill_result_t;
+typedef asn_random_fill_result_t(asn_random_fill_f)(
+    const struct asn_TYPE_descriptor_s *td, void **struct_ptr,
+    const struct asn_encoding_constraints_s *memb_constraints,
+    size_t max_length);
+
+/*
+ * Returns 0 if the structure was properly initialized, -1 otherwise.
+ * The (approx_max_length_limit) specifies the approximate limit of the
+ * resulting structure in units closely resembling bytes. The actual result
+ * might be several times larger or smaller than the length limit.
+ */
+int asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr,
+                    size_t approx_max_length_limit);
+
+/*
+ * Returns a random number between min and max.
+ */
+intmax_t asn_random_between(intmax_t min, intmax_t max);
+
+#endif	/* ASN_RANDOM_FILL */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_system.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_system.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/asn_system.h	(working copy)
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * Miscellaneous system-dependent types.
+ */
+#ifndef	ASN_SYSTEM_H
+#define	ASN_SYSTEM_H
+
+#ifdef	HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef _DEFAULT_SOURCE
+#define _DEFAULT_SOURCE 1
+#endif
+
+#ifndef _BSD_SOURCE
+#define _BSD_SOURCE /* for snprintf() on some linux systems  */
+#endif
+
+#include <stdio.h>	/* For snprintf(3) */
+#include <stdlib.h>	/* For *alloc(3) */
+#include <string.h>	/* For memcpy(3) */
+#include <sys/types.h>	/* For size_t */
+#include <limits.h>	/* For LONG_MAX */
+#include <stdarg.h>	/* For va_start */
+#include <stddef.h>	/* for offsetof and ptrdiff_t */
+
+#ifdef	_WIN32
+
+#include <malloc.h>
+#define	 snprintf	_snprintf
+#define	 vsnprintf	_vsnprintf
+
+/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */
+#define sys_ntohl(l)	((((l) << 24)  & 0xff000000)	\
+			| (((l) << 8) & 0xff0000)	\
+			| (((l) >> 8)  & 0xff00)	\
+			| ((l >> 24) & 0xff))
+
+#ifdef _MSC_VER			/* MSVS.Net */
+#ifndef __cplusplus
+#define inline __inline
+#endif
+#ifndef	ASSUMESTDTYPES	/* Standard types have been defined elsewhere */
+#define	ssize_t		SSIZE_T
+#if _MSC_VER < 1600
+typedef	char		int8_t;
+typedef	short		int16_t;
+typedef	int		int32_t;
+typedef	unsigned char	uint8_t;
+typedef	unsigned short	uint16_t;
+typedef	unsigned int	uint32_t;
+#else /* _MSC_VER >= 1600 */
+#include <stdint.h>
+#endif /* _MSC_VER < 1600 */
+#endif	/* ASSUMESTDTYPES */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <float.h>
+#define isnan _isnan
+#define finite _finite
+#define copysign _copysign
+#define	ilogb	_logb
+#else	/* !_MSC_VER */
+#include <stdint.h>
+#endif	/* _MSC_VER */
+
+#else	/* !_WIN32 */
+
+#if defined(__vxworks)
+#include <types/vxTypes.h>
+#else	/* !defined(__vxworks) */
+
+#include <inttypes.h>	/* C99 specifies this file */
+#include <netinet/in.h> /* for ntohl() */
+#define	sys_ntohl(foo)	ntohl(foo)
+#endif	/* defined(__vxworks) */
+
+#endif	/* _WIN32 */
+
+#if	__GNUC__ >= 3 || defined(__clang__)
+#define CC_ATTRIBUTE(attr)    __attribute__((attr))
+#else
+#define CC_ATTRIBUTE(attr)
+#endif
+#define CC_PRINTFLIKE(fmt, var)     CC_ATTRIBUTE(format(printf, fmt, var))
+#define	CC_NOTUSED                  CC_ATTRIBUTE(unused)
+#ifndef CC_ATTR_NO_SANITIZE
+#define CC_ATTR_NO_SANITIZE(what)   CC_ATTRIBUTE(no_sanitize(what))
+#endif
+
+/* Figure out if thread safety is requested */
+#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT))
+#define	ASN_THREAD_SAFE
+#endif	/* Thread safety */
+
+#ifndef	offsetof	/* If not defined by <stddef.h> */
+#define	offsetof(s, m)	((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0))
+#endif	/* offsetof */
+
+#ifndef	MIN		/* Suitable for comparing primitive types (integers) */
+#if defined(__GNUC__)
+#define	MIN(a,b)	({ __typeof a _a = a; __typeof b _b = b;	\
+	((_a)<(_b)?(_a):(_b)); })
+#else	/* !__GNUC__ */
+#define	MIN(a,b)	((a)<(b)?(a):(b))	/* Unsafe variant */
+#endif /* __GNUC__ */
+#endif	/* MIN */
+
+#if __STDC_VERSION__ >= 199901L
+#ifndef SIZE_MAX
+#define SIZE_MAX   ((~((size_t)0)) >> 1)
+#endif
+
+#ifndef RSIZE_MAX   /* C11, Annex K */
+#define RSIZE_MAX   (SIZE_MAX >> 1)
+#endif
+#ifndef RSSIZE_MAX   /* Halve signed size even further than unsigned */
+#define RSSIZE_MAX   ((ssize_t)(RSIZE_MAX >> 1))
+#endif
+#else   /* Old compiler */
+#undef  SIZE_MAX
+#undef  RSIZE_MAX
+#undef  RSSIZE_MAX
+#define SIZE_MAX   ((~((size_t)0)) >> 1)
+#define RSIZE_MAX   (SIZE_MAX >> 1)
+#define RSSIZE_MAX   ((ssize_t)(RSIZE_MAX >> 1))
+#endif
+
+#if __STDC_VERSION__ >= 199901L
+#define ASN_PRI_SIZE "zu"
+#define ASN_PRI_SSIZE "zd"
+#define ASN_PRIuMAX PRIuMAX
+#define ASN_PRIdMAX PRIdMAX
+#else
+#define ASN_PRI_SIZE "lu"
+#define ASN_PRI_SSIZE "ld"
+#if LLONG_MAX > LONG_MAX
+#define ASN_PRIuMAX "llu"
+#define ASN_PRIdMAX "lld"
+#else
+#define ASN_PRIuMAX "lu"
+#define ASN_PRIdMAX "ld"
+#endif
+#endif
+
+#endif	/* ASN_SYSTEM_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ber_decoder.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ber_decoder.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ber_decoder.h	(working copy)
@@ -0,0 +1,66 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_BER_DECODER_H_
+#define	_BER_DECODER_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+struct asn_codec_ctx_s;		/* Forward declaration */
+
+/*
+ * The BER decoder of any type.
+ * This function may be invoked directly from the application.
+ * Decodes BER, DER and CER data (DER and CER are different subsets of BER).
+ *
+ * NOTE: Use the der_encode() function (der_encoder.h) to produce encoding
+ * which is compliant with ber_decode().
+ */
+asn_dec_rval_t ber_decode(
+    const struct asn_codec_ctx_s *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    void **struct_ptr,  /* Pointer to a target structure's pointer */
+    const void *buffer, /* Data to be decoded */
+    size_t size         /* Size of that buffer */
+);
+
+/*
+ * Type of generic function which decodes the byte stream into the structure.
+ */
+typedef asn_dec_rval_t(ber_type_decoder_f)(
+    const struct asn_codec_ctx_s *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr,
+    const void *buf_ptr, size_t size, int tag_mode);
+
+/*******************************
+ * INTERNALLY USEFUL FUNCTIONS *
+ *******************************/
+
+/*
+ * Check that all tags correspond to the type definition (as given in head).
+ * On return, last_length would contain either a non-negative length of the
+ * value part of the last TLV, or the negative number of expected
+ * "end of content" sequences. The number may only be negative if the
+ * head->last_tag_form is non-zero.
+ */
+asn_dec_rval_t ber_check_tags(
+    const struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    asn_struct_ctx_t *opt_ctx, /* saved decoding context */
+    const void *ptr, size_t size,
+    int tag_mode,      /* {-1,0,1}: IMPLICIT, no, EXPLICIT */
+    int last_tag_form, /* {-1,0:1}: any, primitive, constr */
+    ber_tlv_len_t *last_length, int *opt_tlv_form /* optional tag form */
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BER_DECODER_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ber_tlv_length.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ber_tlv_length.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ber_tlv_length.h	(working copy)
@@ -0,0 +1,50 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_BER_TLV_LENGTH_H_
+#define	_BER_TLV_LENGTH_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef ssize_t ber_tlv_len_t;
+
+/*
+ * This function tries to fetch the length of the BER TLV value and place it
+ * in *len_r.
+ * RETURN VALUES:
+ *	 0:	More data expected than bufptr contains.
+ *	-1:	Fatal error deciphering length.
+ *	>0:	Number of bytes used from bufptr.
+ * On return with >0, len_r is constrained as -1..MAX, where -1 mean
+ * that the value is of indefinite length.
+ */
+ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size,
+	ber_tlv_len_t *len_r);
+
+/*
+ * This function expects bufptr to be positioned over L in TLV.
+ * It returns number of bytes occupied by L and V together, suitable
+ * for skipping. The function properly handles indefinite length.
+ * RETURN VALUES:
+ * 	Standard {-1,0,>0} convention.
+ */
+ssize_t ber_skip_length(
+	const struct asn_codec_ctx_s *opt_codec_ctx,	/* optional context */
+	int _is_constructed, const void *bufptr, size_t size);
+
+/*
+ * This function serializes the length (L from TLV) in DER format.
+ * It always returns number of bytes necessary to represent the length,
+ * it is a caller's responsibility to check the return value
+ * against the supplied buffer's size.
+ */
+size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BER_TLV_LENGTH_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ber_tlv_tag.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ber_tlv_tag.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/ber_tlv_tag.h	(working copy)
@@ -0,0 +1,60 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_BER_TLV_TAG_H_
+#define	_BER_TLV_TAG_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum asn_tag_class {
+	ASN_TAG_CLASS_UNIVERSAL		= 0,	/* 0b00 */
+	ASN_TAG_CLASS_APPLICATION	= 1,	/* 0b01 */
+	ASN_TAG_CLASS_CONTEXT		= 2,	/* 0b10 */
+	ASN_TAG_CLASS_PRIVATE		= 3	/* 0b11 */
+};
+typedef unsigned ber_tlv_tag_t;	/* BER TAG from Tag-Length-Value */
+
+/*
+ * Tag class is encoded together with tag value for optimization purposes.
+ */
+#define	BER_TAG_CLASS(tag)	((tag) & 0x3)
+#define	BER_TAG_VALUE(tag)	((tag) >> 2)
+#define	BER_TLV_CONSTRUCTED(tagptr)	(((*(const uint8_t *)tagptr)&0x20)?1:0)
+
+#define	BER_TAGS_EQUAL(tag1, tag2)	((tag1) == (tag2))
+
+/*
+ * Several functions for printing the TAG in the canonical form
+ * (i.e. "[PRIVATE 0]").
+ * Return values correspond to their libc counterparts (if any).
+ */
+ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen);
+ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *);
+char *ber_tlv_tag_string(ber_tlv_tag_t tag);
+
+
+/*
+ * This function tries to fetch the tag from the input stream.
+ * RETURN VALUES:
+ * 	 0:	More data expected than bufptr contains.
+ * 	-1:	Fatal error deciphering tag.
+ *	>0:	Number of bytes used from bufptr. tag_r will contain the tag.
+ */
+ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r);
+
+/*
+ * This function serializes the tag (T from TLV) in BER format.
+ * It always returns number of bytes necessary to represent the tag,
+ * it is a caller's responsibility to check the return value
+ * against the supplied buffer's size.
+ */
+size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BER_TLV_TAG_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_CHOICE.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_CHOICE.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_CHOICE.h	(working copy)
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_CONSTR_CHOICE_H_
+#define	_CONSTR_CHOICE_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct asn_CHOICE_specifics_s {
+	/*
+	 * Target structure description.
+	 */
+	unsigned struct_size;       /* Size of the target structure. */
+	unsigned ctx_offset;        /* Offset of the asn_codec_ctx_t member */
+	unsigned pres_offset;       /* Identifier of the present member */
+	unsigned pres_size;         /* Size of the identifier (enum) */
+
+	/*
+	 * Tags to members mapping table.
+	 */
+	const asn_TYPE_tag2member_t *tag2el;
+	unsigned tag2el_count;
+
+	/* Canonical ordering of CHOICE elements, for PER */
+	const unsigned *to_canonical_order;
+	const unsigned *from_canonical_order;
+
+	/*
+	 * Extensions-related stuff.
+	 */
+	signed ext_start; /* First member of extensions, or -1 */
+} asn_CHOICE_specifics_t;
+
+/*
+ * A set specialized functions dealing with the CHOICE type.
+ */
+asn_struct_free_f CHOICE_free;
+asn_struct_print_f CHOICE_print;
+asn_struct_compare_f CHOICE_compare;
+asn_constr_check_f CHOICE_constraint;
+ber_type_decoder_f CHOICE_decode_ber;
+der_type_encoder_f CHOICE_encode_der;
+xer_type_decoder_f CHOICE_decode_xer;
+xer_type_encoder_f CHOICE_encode_xer;
+oer_type_decoder_f CHOICE_decode_oer;
+oer_type_encoder_f CHOICE_encode_oer;
+per_type_decoder_f CHOICE_decode_uper;
+per_type_encoder_f CHOICE_encode_uper;
+per_type_decoder_f CHOICE_decode_aper;
+per_type_encoder_f CHOICE_encode_aper;
+asn_outmost_tag_f CHOICE_outmost_tag;
+asn_random_fill_f CHOICE_random_fill;
+extern asn_TYPE_operation_t asn_OP_CHOICE;
+
+/*
+ * Return the 1-based choice variant presence index.
+ * Returns 0 in case of error.
+ */
+unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td,
+                                     const void *structure_ptr);
+
+/*
+ * Sets or resets the 1-based choice variant presence index.
+ * In case a previous index is not zero, the currently selected structure
+ * member is freed and zeroed-out first.
+ * Returns 0 on success and -1 on error.
+ */
+int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td,
+                                void *structure_ptr, unsigned present);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CONSTR_CHOICE_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_SEQUENCE.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_SEQUENCE.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_SEQUENCE.h	(working copy)
@@ -0,0 +1,68 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_CONSTR_SEQUENCE_H_
+#define	_CONSTR_SEQUENCE_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct asn_SEQUENCE_specifics_s {
+	/*
+	 * Target structure description.
+	 */
+	unsigned struct_size;	/* Size of the target structure. */
+	unsigned ctx_offset;	/* Offset of the asn_struct_ctx_t member */
+
+	/*
+	 * Tags to members mapping table (sorted).
+	 */
+	const asn_TYPE_tag2member_t *tag2el;
+	unsigned tag2el_count;
+
+	/*
+	 * Optional members of the extensions root (roms) or additions (aoms).
+	 * Meaningful for PER.
+	 */
+	const int *oms;         /* Optional MemberS */
+	unsigned roms_count;    /* Root optional members count */
+	unsigned aoms_count;    /* Additions optional members count */
+
+	/*
+	 * Description of an extensions group.
+	 * Root components are clustered at the beginning of the structure,
+	 * whereas extensions are clustered at the end. -1 means not extensible.
+	 */
+	signed first_extension;       /* First extension addition */
+} asn_SEQUENCE_specifics_t;
+
+
+/*
+ * A set specialized functions dealing with the SEQUENCE type.
+ */
+asn_struct_free_f SEQUENCE_free;
+asn_struct_print_f SEQUENCE_print;
+asn_struct_compare_f SEQUENCE_compare;
+asn_constr_check_f SEQUENCE_constraint;
+ber_type_decoder_f SEQUENCE_decode_ber;
+der_type_encoder_f SEQUENCE_encode_der;
+xer_type_decoder_f SEQUENCE_decode_xer;
+xer_type_encoder_f SEQUENCE_encode_xer;
+oer_type_decoder_f SEQUENCE_decode_oer;
+oer_type_encoder_f SEQUENCE_encode_oer;
+per_type_decoder_f SEQUENCE_decode_uper;
+per_type_encoder_f SEQUENCE_encode_uper;
+per_type_decoder_f SEQUENCE_decode_aper;
+per_type_encoder_f SEQUENCE_encode_aper;
+asn_random_fill_f  SEQUENCE_random_fill;
+extern asn_TYPE_operation_t asn_OP_SEQUENCE;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CONSTR_SEQUENCE_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_SEQUENCE_OF.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_SEQUENCE_OF.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_SEQUENCE_OF.h	(working copy)
@@ -0,0 +1,41 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_CONSTR_SEQUENCE_OF_H_
+#define	_CONSTR_SEQUENCE_OF_H_
+
+#include <asn_application.h>
+#include <constr_SET_OF.h>		/* Implemented using SET OF */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * A set specialized functions dealing with the SEQUENCE OF type.
+ * Generally implemented using SET OF.
+ */
+asn_struct_compare_f SEQUENCE_OF_compare;
+der_type_encoder_f SEQUENCE_OF_encode_der;
+xer_type_encoder_f SEQUENCE_OF_encode_xer;
+per_type_encoder_f SEQUENCE_OF_encode_uper;
+per_type_encoder_f SEQUENCE_OF_encode_aper;
+extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF;
+
+#define	SEQUENCE_OF_free	SET_OF_free
+#define	SEQUENCE_OF_print	SET_OF_print
+#define	SEQUENCE_OF_constraint	SET_OF_constraint
+#define	SEQUENCE_OF_decode_ber	SET_OF_decode_ber
+#define	SEQUENCE_OF_decode_xer	SET_OF_decode_xer
+#define	SEQUENCE_OF_decode_oer  SET_OF_decode_oer
+#define	SEQUENCE_OF_encode_oer  SET_OF_encode_oer
+#define	SEQUENCE_OF_decode_uper	SET_OF_decode_uper
+#define	SEQUENCE_OF_decode_aper	SET_OF_decode_aper
+#define	SEQUENCE_OF_random_fill SET_OF_random_fill
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CONSTR_SET_OF_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_SET.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_SET.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_SET.h	(working copy)
@@ -0,0 +1,87 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_CONSTR_SET_H_
+#define	_CONSTR_SET_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef struct asn_SET_specifics_s {
+	/*
+	 * Target structure description.
+	 */
+	unsigned struct_size;       /* Size of the target structure. */
+	unsigned ctx_offset;        /* Offset of the asn_struct_ctx_t member */
+	unsigned pres_offset;       /* Offset of _presence_map member */
+
+	/*
+	 * Tags to members mapping table (sorted).
+	 * Sometimes suitable for DER encoding (untagged CHOICE is present);
+	 * if so, tag2el_count will be greater than td->elements_count.
+	 */
+	const asn_TYPE_tag2member_t *tag2el;
+	unsigned tag2el_count;
+
+	/*
+	 * Tags to members mapping table, second edition.
+	 * Suitable for CANONICAL-XER encoding.
+	 */
+	const asn_TYPE_tag2member_t *tag2el_cxer;
+	unsigned tag2el_cxer_count;
+
+	/*
+	 * Extensions-related stuff.
+	 */
+	int extensible;                             /* Whether SET is extensible */
+	const unsigned int *_mandatory_elements;    /* Bitmask of mandatory ones */
+} asn_SET_specifics_t;
+
+/*
+ * A set specialized functions dealing with the SET type.
+ */
+asn_struct_free_f SET_free;
+asn_struct_print_f SET_print;
+asn_struct_compare_f SET_compare;
+asn_constr_check_f SET_constraint;
+ber_type_decoder_f SET_decode_ber;
+der_type_encoder_f SET_encode_der;
+xer_type_decoder_f SET_decode_xer;
+xer_type_encoder_f SET_encode_xer;
+per_type_decoder_f SET_decode_uper;
+per_type_encoder_f SET_encode_uper;
+asn_random_fill_f  SET_random_fill;
+extern asn_TYPE_operation_t asn_OP_SET;
+
+/***********************
+ * Some handy helpers. *
+ ***********************/
+
+/*
+ * Figure out whether the SET member indicated by PR_x has already been decoded.
+ * It is very simple bitfield test, despite its visual complexity.
+ */
+#define	ASN_SET_ISPRESENT(set_ptr, PR_x)				\
+	ASN_SET_ISPRESENT2(&((set_ptr)->_presence_map), PR_x)
+#define	ASN_SET_ISPRESENT2(map_ptr, PR_x)				\
+	(((unsigned int *)(map_ptr))					\
+		[(PR_x)	/ (8 * sizeof(unsigned int))]			\
+		& (1u << ((8 * sizeof(unsigned int)) - 1			\
+		- ((PR_x) % (8 * sizeof(unsigned int))))))
+
+#define	ASN_SET_MKPRESENT(map_ptr, PR_x)				\
+	(((unsigned int *)(map_ptr))					\
+		[(PR_x)	/ (8 * sizeof(unsigned int))]			\
+		|= (1u << ((8 * sizeof(unsigned int)) - 1		\
+		- ((PR_x) % (8 * sizeof(unsigned int))))))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CONSTR_SET_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_SET_OF.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_SET_OF.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_SET_OF.h	(working copy)
@@ -0,0 +1,49 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	CONSTR_SET_OF_H
+#define	CONSTR_SET_OF_H
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct asn_SET_OF_specifics_s {
+    /*
+     * Target structure description.
+     */
+    unsigned struct_size;       /* Size of the target structure. */
+    unsigned ctx_offset;        /* Offset of the asn_struct_ctx_t member */
+
+    /* XER-specific stuff */
+    int as_XMLValueList; /* The member type must be encoded like this */
+} asn_SET_OF_specifics_t;
+
+/*
+ * A set specialized functions dealing with the SET OF type.
+ */
+asn_struct_free_f SET_OF_free;
+asn_struct_print_f SET_OF_print;
+asn_struct_compare_f SET_OF_compare;
+asn_constr_check_f SET_OF_constraint;
+ber_type_decoder_f SET_OF_decode_ber;
+der_type_encoder_f SET_OF_encode_der;
+xer_type_decoder_f SET_OF_decode_xer;
+xer_type_encoder_f SET_OF_encode_xer;
+oer_type_decoder_f SET_OF_decode_oer;
+oer_type_encoder_f SET_OF_encode_oer;
+per_type_decoder_f SET_OF_decode_uper;
+per_type_encoder_f SET_OF_encode_uper;
+per_type_decoder_f SET_OF_decode_aper;
+per_type_encoder_f SET_OF_encode_aper;
+asn_random_fill_f  SET_OF_random_fill;
+extern asn_TYPE_operation_t asn_OP_SET_OF;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* CONSTR_SET_OF_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_TYPE.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_TYPE.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constr_TYPE.h	(working copy)
@@ -0,0 +1,262 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * This file contains the declaration structure called "ASN.1 Type Definition",
+ * which holds all information necessary for encoding and decoding routines.
+ * This structure even contains pointer to these encoding and decoding routines
+ * for each defined ASN.1 type.
+ */
+#ifndef	_CONSTR_TYPE_H_
+#define	_CONSTR_TYPE_H_
+
+#include <ber_tlv_length.h>
+#include <ber_tlv_tag.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+struct asn_TYPE_member_s;	/* Forward declaration */
+
+/*
+ * This type provides the context information for various ASN.1 routines,
+ * primarily ones doing decoding. A member _asn_ctx of this type must be
+ * included into certain target language's structures, such as compound types.
+ */
+typedef struct asn_struct_ctx_s {
+	short phase;		/* Decoding phase */
+	short step;		/* Elementary step of a phase */
+	int context;		/* Other context information */
+	void *ptr;		/* Decoder-specific stuff (stack elements) */
+	ber_tlv_len_t left;	/* Number of bytes left, -1 for indefinite */
+} asn_struct_ctx_t;
+
+#include <ber_decoder.h>	/* Basic Encoding Rules decoder */
+#include <der_encoder.h>	/* Distinguished Encoding Rules encoder */
+#include <xer_decoder.h>	/* Decoder of XER (XML, text) */
+#include <xer_encoder.h>	/* Encoder into XER (XML, text) */
+#include <per_decoder.h>	/* Packet Encoding Rules decoder */
+#include <per_encoder.h>	/* Packet Encoding Rules encoder */
+#include <constraints.h>	/* Subtype constraints support */
+#include <asn_random_fill.h>	/* Random structures support */
+
+#ifdef  ASN_DISABLE_OER_SUPPORT
+typedef void (oer_type_decoder_f)(void);
+typedef void (oer_type_encoder_f)(void);
+typedef void asn_oer_constraints_t;
+#else
+#include <oer_decoder.h>	/* Octet Encoding Rules encoder */
+#include <oer_encoder.h>	/* Octet Encoding Rules encoder */
+#endif
+
+/*
+ * Free the structure according to its specification.
+ * Use one of ASN_STRUCT_{FREE,RESET,CONTENTS_ONLY} macros instead.
+ * Do not use directly.
+ */
+enum asn_struct_free_method {
+    ASFM_FREE_EVERYTHING,   /* free(struct_ptr) and underlying members */
+    ASFM_FREE_UNDERLYING,   /* free underlying members */
+    ASFM_FREE_UNDERLYING_AND_RESET   /* FREE_UNDERLYING + memset(0) */
+};
+typedef void (asn_struct_free_f)(
+		const struct asn_TYPE_descriptor_s *type_descriptor,
+		void *struct_ptr, enum asn_struct_free_method);
+
+/*
+ * Free the structure including freeing the memory pointed to by ptr itself.
+ */
+#define ASN_STRUCT_FREE(asn_DEF, ptr) \
+    (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_EVERYTHING)
+
+/*
+ * Free the memory used by the members of the structure without freeing the
+ * the structure pointer itself.
+ * ZERO-OUT the structure to the safe clean state.
+ * (Retaining the pointer may be useful in case the structure is allocated
+ *  statically or arranged on the stack, yet its elements are dynamic.)
+ */
+#define ASN_STRUCT_RESET(asn_DEF, ptr) \
+    (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING_AND_RESET)
+
+/*
+ * Free memory used by the members of the structure without freeing
+ * the structure pointer itself.
+ * (Retaining the pointer may be useful in case the structure is allocated
+ *  statically or arranged on the stack, yet its elements are dynamic.)
+ * AVOID using it in the application code;
+ * Use a safer ASN_STRUCT_RESET() instead.
+ */
+#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \
+    (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING)
+
+/*
+ * Print the structure according to its specification.
+ */
+typedef int(asn_struct_print_f)(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const void *struct_ptr,
+    int level, /* Indentation level */
+    asn_app_consume_bytes_f *callback, void *app_key);
+
+/*
+ * Compare two structs between each other.
+ * Returns <0 if struct_A is "smaller" than struct_B, >0 if "greater",
+ * and =0 if "equal to", for some type-specific, stable definition of
+ * "smaller", "greater" and "equal to".
+ */
+typedef int (asn_struct_compare_f)(
+		const struct asn_TYPE_descriptor_s *type_descriptor,
+		const void *struct_A,
+		const void *struct_B);
+
+/*
+ * Return the outmost tag of the type.
+ * If the type is untagged CHOICE, the dynamic operation is performed.
+ * NOTE: This function pointer type is only useful internally.
+ * Do not use it in your application.
+ */
+typedef ber_tlv_tag_t (asn_outmost_tag_f)(
+		const struct asn_TYPE_descriptor_s *type_descriptor,
+		const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag);
+/* The instance of the above function type; used internally. */
+asn_outmost_tag_f asn_TYPE_outmost_tag;
+
+/*
+ * Fetch the desired type of the Open Type based on the
+ * Information Object Set driven constraints.
+ */
+typedef struct asn_type_selector_result_s {
+    const struct asn_TYPE_descriptor_s *type_descriptor; /* Type encoded. */
+    unsigned presence_index; /* Associated choice variant. */
+} asn_type_selector_result_t;
+typedef asn_type_selector_result_t(asn_type_selector_f)(
+    const struct asn_TYPE_descriptor_s *parent_type_descriptor,
+    const void *parent_structure_ptr);
+
+/*
+ * Generalized functions for dealing with the speciic type.
+ * May be directly invoked by applications.
+ */
+typedef struct asn_TYPE_operation_s {
+    asn_struct_free_f *free_struct;     /* Free the structure */
+    asn_struct_print_f *print_struct;   /* Human readable output */
+    asn_struct_compare_f *compare_struct; /* Compare two structures */
+    ber_type_decoder_f *ber_decoder;      /* Generic BER decoder */
+    der_type_encoder_f *der_encoder;      /* Canonical DER encoder */
+    xer_type_decoder_f *xer_decoder;      /* Generic XER decoder */
+    xer_type_encoder_f *xer_encoder;      /* [Canonical] XER encoder */
+    oer_type_decoder_f *oer_decoder;      /* Generic OER decoder */
+    oer_type_encoder_f *oer_encoder;      /* Canonical OER encoder */
+    per_type_decoder_f *uper_decoder;     /* Unaligned PER decoder */
+    per_type_encoder_f *uper_encoder;     /* Unaligned PER encoder */
+    per_type_decoder_f *aper_decoder;     /* Aligned PER decoder */
+    per_type_encoder_f *aper_encoder;     /* Aligned PER encoder */
+    asn_random_fill_f *random_fill;       /* Initialize with a random value */
+    asn_outmost_tag_f *outmost_tag;       /* <optional, internal> */
+} asn_TYPE_operation_t;
+
+/*
+ * A constraints tuple specifying both the OER and PER constraints.
+ */
+typedef struct asn_encoding_constraints_s {
+    const struct asn_oer_constraints_s *oer_constraints;
+    const struct asn_per_constraints_s *per_constraints;
+    asn_constr_check_f *general_constraints;
+} asn_encoding_constraints_t;
+
+/*
+ * The definitive description of the destination language's structure.
+ */
+typedef struct asn_TYPE_descriptor_s {
+    const char *name;       /* A name of the ASN.1 type. "" in some cases. */
+    const char *xml_tag;    /* Name used in XML tag */
+
+    /*
+     * Generalized functions for dealing with the specific type.
+     * May be directly invoked by applications.
+     */
+    asn_TYPE_operation_t *op;
+
+    /***********************************************************************
+     * Internally useful members. Not to be used by applications directly. *
+     **********************************************************************/
+
+    /*
+     * Tags that are expected to occur.
+     */
+    const ber_tlv_tag_t *tags;      /* Effective tags sequence for this type */
+    unsigned tags_count;            /* Number of tags which are expected */
+    const ber_tlv_tag_t *all_tags;  /* Every tag for BER/containment */
+    unsigned all_tags_count;        /* Number of tags */
+
+    /* OER, PER, and general constraints */
+    asn_encoding_constraints_t encoding_constraints;
+
+    /*
+     * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE).
+     */
+    struct asn_TYPE_member_s *elements;
+    unsigned elements_count;
+
+    /*
+     * Additional information describing the type, used by appropriate
+     * functions above.
+     */
+    const void *specifics;
+} asn_TYPE_descriptor_t;
+
+/*
+ * This type describes an element of the constructed type,
+ * i.e. SEQUENCE, SET, CHOICE, etc.
+ */
+  enum asn_TYPE_flags_e {
+    ATF_NOFLAGS,
+    ATF_POINTER = 0x01,   /* Represented by the pointer */
+    ATF_OPEN_TYPE = 0x02, /* Open Type */
+    ATF_ANY_TYPE = 0x04   /* ANY type (deprecated!) */
+  };
+typedef struct asn_TYPE_member_s {
+    enum asn_TYPE_flags_e flags; /* Element's presentation flags */
+    unsigned optional;      /* Following optional members, including current */
+    unsigned memb_offset;   /* Offset of the element */
+    ber_tlv_tag_t tag;      /* Outmost (most immediate) tag */
+    int tag_mode;           /* IMPLICIT/no/EXPLICIT tag at current level */
+    asn_TYPE_descriptor_t *type;            /* Member type descriptor */
+    asn_type_selector_f *type_selector;     /* IoS runtime type selector */
+    asn_encoding_constraints_t encoding_constraints;
+    int (*default_value_cmp)(const void *sptr); /* Compare DEFAULT <value> */
+    int (*default_value_set)(void **sptr);      /* Set DEFAULT <value> */
+    const char *name; /* ASN.1 identifier of the element */
+} asn_TYPE_member_t;
+
+/*
+ * BER tag to element number mapping.
+ */
+typedef struct asn_TYPE_tag2member_s {
+    ber_tlv_tag_t el_tag;   /* Outmost tag of the member */
+    unsigned el_no;         /* Index of the associated member, base 0 */
+    int toff_first;         /* First occurence of the el_tag, relative */
+    int toff_last;          /* Last occurence of the el_tag, relative */
+} asn_TYPE_tag2member_t;
+
+/*
+ * This function prints out the contents of the target language's structure
+ * (struct_ptr) into the file pointer (stream) in human readable form.
+ * RETURN VALUES:
+ * 	 0: The structure is printed.
+ * 	-1: Problem dumping the structure.
+ * (See also xer_fprint() in xer_encoder.h)
+ */
+int asn_fprint(FILE *stream, /* Destination stream descriptor */
+               const asn_TYPE_descriptor_t *td, /* ASN.1 type descriptor */
+               const void *struct_ptr);         /* Structure to be printed */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CONSTR_TYPE_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constraints.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constraints.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/constraints.h	(working copy)
@@ -0,0 +1,62 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	ASN1_CONSTRAINTS_VALIDATOR_H
+#define	ASN1_CONSTRAINTS_VALIDATOR_H
+
+#include <asn_system.h>		/* Platform-dependent types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;		/* Forward declaration */
+
+/*
+ * Validate the structure according to the ASN.1 constraints.
+ * If errbuf and errlen are given, they shall be pointing to the appropriate
+ * buffer space and its length before calling this function. Alternatively,
+ * they could be passed as NULL's. If constraints validation fails,
+ * errlen will contain the actual number of bytes taken from the errbuf
+ * to encode an error message (properly 0-terminated).
+ * 
+ * RETURN VALUES:
+ * This function returns 0 in case all ASN.1 constraints are met
+ * and -1 if one or more constraints were failed.
+ */
+int asn_check_constraints(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const void *struct_ptr, /* Target language's structure */
+    char *errbuf,           /* Returned error description */
+    size_t *errlen          /* Length of the error description */
+);
+
+
+/*
+ * Generic type for constraint checking callback,
+ * associated with every type descriptor.
+ */
+typedef int(asn_constr_check_f)(
+    const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr,
+    asn_app_constraint_failed_f *optional_callback, /* Log the error */
+    void *optional_app_key /* Opaque key passed to a callback */
+);
+
+/*******************************
+ * INTERNALLY USEFUL FUNCTIONS *
+ *******************************/
+
+asn_constr_check_f asn_generic_no_constraint;	/* No constraint whatsoever */
+asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */
+
+/*
+ * Invoke the callback with a complete error message.
+ */
+#define	ASN__CTFAIL	if(ctfailcb) ctfailcb
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ASN1_CONSTRAINTS_VALIDATOR_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/der_encoder.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/der_encoder.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/der_encoder.h	(working copy)
@@ -0,0 +1,68 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_DER_ENCODER_H_
+#define	_DER_ENCODER_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/*
+ * The DER encoder of any type. May be invoked by the application.
+ * Produces DER- and BER-compliant encoding. (DER is a subset of BER).
+ *
+ * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data
+ * produced by der_encode().
+ */
+asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor,
+                          const void *struct_ptr, /* Structure to be encoded */
+                          asn_app_consume_bytes_f *consume_bytes_cb,
+                          void *app_key /* Arbitrary callback argument */
+);
+
+/* A variant of der_encode() which encodes data into the pre-allocated buffer */
+asn_enc_rval_t der_encode_to_buffer(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const void *struct_ptr, /* Structure to be encoded */
+    void *buffer,           /* Pre-allocated buffer */
+    size_t buffer_size      /* Initial buffer size (maximum) */
+);
+
+/*
+ * Type of the generic DER encoder.
+ */
+typedef asn_enc_rval_t(der_type_encoder_f)(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const void *struct_ptr, /* Structure to be encoded */
+    int tag_mode,           /* {-1,0,1}: IMPLICIT, no, EXPLICIT */
+    ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */
+    void *app_key /* Arbitrary callback argument */
+);
+
+
+/*******************************
+ * INTERNALLY USEFUL FUNCTIONS *
+ *******************************/
+
+/*
+ * Write out leading TL[v] sequence according to the type definition.
+ */
+ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor,
+                       size_t struct_length,
+                       int tag_mode,      /* {-1,0,1}: IMPLICIT, no, EXPLICIT */
+                       int last_tag_form, /* {0,!0}: prim, constructed */
+                       ber_tlv_tag_t tag,
+                       asn_app_consume_bytes_f *consume_bytes_cb,
+                       void *app_key);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _DER_ENCODER_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/file-dependencies
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/file-dependencies	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/file-dependencies	(working copy)
@@ -0,0 +1,89 @@
+# This file contains dependency information for the asn1c compiler's skeletons.
+# Feel free to edit this file.
+# The format is like this:
+# 	<filename>                      # Include this file unconditionally
+# 	<filename> <dependent-file> ... # Include dependencies of <filename>.
+#
+
+ANY.h ANY.c OCTET_STRING.h
+OPEN_TYPE.h OPEN_TYPE.c constr_CHOICE.h
+BMPString.h BMPString.c UTF8String.h OCTET_STRING.h
+BOOLEAN.h BOOLEAN.c
+ENUMERATED.h ENUMERATED.c INTEGER.h NativeEnumerated.h
+GeneralString.h GeneralString.c OCTET_STRING.h
+GeneralizedTime.h GeneralizedTime.c OCTET_STRING.h
+GraphicString.h GraphicString.c OCTET_STRING.h
+IA5String.h IA5String.c OCTET_STRING.h
+INTEGER.h INTEGER.c
+ISO646String.h ISO646String.c OCTET_STRING.h
+NULL.h NULL.c BOOLEAN.h
+NativeEnumerated.h NativeEnumerated.c NativeInteger.h
+NativeInteger.h NativeInteger.c INTEGER.h
+NativeReal.h NativeReal.c REAL.h
+NumericString.h NumericString.c OCTET_STRING.h
+OBJECT_IDENTIFIER.h OBJECT_IDENTIFIER.c INTEGER.h OCTET_STRING.h
+ObjectDescriptor.h ObjectDescriptor.c GraphicString.h
+PrintableString.h PrintableString.c OCTET_STRING.h
+REAL.h REAL.c INTEGER.h OCTET_STRING.h
+RELATIVE-OID.h RELATIVE-OID.c OBJECT_IDENTIFIER.h OCTET_STRING.h
+T61String.h T61String.c OCTET_STRING.h
+TeletexString.h TeletexString.c	 OCTET_STRING.h
+UTCTime.h UTCTime.c GeneralizedTime.h OCTET_STRING.h
+UTF8String.h UTF8String.c OCTET_STRING.h
+UniversalString.h UniversalString.c UTF8String.h OCTET_STRING.h
+VideotexString.h VideotexString.c OCTET_STRING.h
+VisibleString.h VisibleString.c OCTET_STRING.h
+asn_SEQUENCE_OF.h asn_SEQUENCE_OF.c asn_SET_OF.h
+asn_SET_OF.h asn_SET_OF.c
+constr_CHOICE.h constr_CHOICE.c
+constr_SEQUENCE.h constr_SEQUENCE.c OPEN_TYPE.h
+constr_SEQUENCE_OF.h constr_SEQUENCE_OF.c asn_SEQUENCE_OF.h constr_SET_OF.h
+constr_SET.h constr_SET.c
+constr_SET_OF.h constr_SET_OF.c asn_SET_OF.h
+
+COMMON-FILES:			# THIS IS A SPECIAL SECTION
+asn_application.h asn_application.c		# Applications should include this file
+asn_ioc.h			# Information Object Classes, runtime support
+asn_system.h			# Platform-dependent types
+asn_codecs.h			# Return types of encoders and decoders
+asn_internal.h asn_internal.c			# Internal stuff
+asn_random_fill.h asn_random_fill.c		# Initialize with a random value
+asn_bit_data.h asn_bit_data.c         # Bit streaming support
+OCTET_STRING.h OCTET_STRING.c
+BIT_STRING.h BIT_STRING.c OCTET_STRING.h
+asn_codecs_prim.c asn_codecs_prim.h	# enc/decoders for primitive types
+ber_tlv_length.h ber_tlv_length.c	# BER TLV L (length)
+ber_tlv_tag.h ber_tlv_tag.c	# BER TLV T (tag)
+ber_decoder.h ber_decoder.c	# BER decoder support code
+der_encoder.h der_encoder.c	# DER encoder support code
+constr_TYPE.h constr_TYPE.c	# Description of a type
+constraints.h constraints.c	# Subtype constraints support
+xer_support.h xer_support.c	# XML parsing
+xer_decoder.h xer_decoder.c	# XER decoding support
+xer_encoder.h xer_encoder.c	# XER encoding support
+per_support.h per_support.c	# PER parsing
+per_decoder.h per_decoder.c	# PER decoding support
+per_encoder.h per_encoder.c	# PER encoding support
+per_opentype.h per_opentype.c	# PER "open type" handling
+
+CONVERTER:			# THIS IS A SPECIAL SECTION
+converter-example.c		# A default name for the example transcoder
+
+CODEC-OER:			# THIS IS A SPECIAL SECTION
+oer_decoder.h
+oer_encoder.h
+oer_support.h
+oer_decoder.h oer_decoder.c OPEN_TYPE.h
+oer_encoder.h oer_encoder.c
+oer_support.h oer_support.c
+OPEN_TYPE.h OPEN_TYPE_oer.c constr_CHOICE.h
+INTEGER.h INTEGER_oer.c
+BIT_STRING.h BIT_STRING_oer.c OCTET_STRING.h
+OCTET_STRING.h OCTET_STRING_oer.c
+NativeInteger.h NativeInteger_oer.c
+NativeEnumerated.h NativeEnumerated_oer.c
+constr_CHOICE.h constr_CHOICE_oer.c
+constr_SEQUENCE.h constr_SEQUENCE_oer.c
+constr_SET_OF.h constr_SET_OF_oer.c
+
+CODEC-PER:			# THIS IS A SPECIAL SECTION
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/oer_decoder.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/oer_decoder.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/oer_decoder.h	(working copy)
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	OER_DECODER_H
+#define	OER_DECODER_H
+
+#include <asn_application.h>
+#include <oer_support.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+struct asn_codec_ctx_s;		/* Forward declaration */
+
+/*
+ * The Octet Encoding Rules (OER, X.696 08/2015) decoder for any given type.
+ * This function may be invoked directly by the application.
+ * Parses CANONICAL-OER and BASIC-OER.
+ */
+asn_dec_rval_t oer_decode(const struct asn_codec_ctx_s *opt_codec_ctx,
+	const struct asn_TYPE_descriptor_s *type_descriptor,
+	void **struct_ptr,	/* Pointer to a target structure's pointer */
+	const void *buffer,	/* Data to be decoded */
+	size_t size		/* Size of that buffer */
+	);
+
+/*
+ * Type of generic function which decodes the byte stream into the structure.
+ */
+typedef asn_dec_rval_t(oer_type_decoder_f)(
+    const struct asn_codec_ctx_s *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_oer_constraints_t *constraints,
+    void **struct_ptr,
+    const void *buf_ptr,
+    size_t size);
+
+/*
+ * Swallow the Open Type (X.696 (08/2015), #30) into /dev/null.
+ * RETURN VALUES:
+ *      -1:     Fatal error deciphering length.
+ *       0:     More data expected than bufptr contains.
+ *      >0:     Number of bytes used from bufptr.
+ */
+ssize_t oer_open_type_skip(const void *bufptr, size_t size);
+
+/*
+ * Read the Open Type (X.696 (08/2015), #30).
+ * RETURN VALUES:
+ *       0:     More data expected than bufptr contains.
+ *      -1:     Fatal error deciphering length.
+ *      >0:     Number of bytes used from bufptr.
+ */
+ssize_t oer_open_type_get(const asn_codec_ctx_t *opt_codec_ctx,
+                          const struct asn_TYPE_descriptor_s *td,
+                          const asn_oer_constraints_t *constraints,
+                          void **struct_ptr, const void *bufptr, size_t size);
+
+/*
+ * Length-prefixed buffer decoding for primitive types.
+ */
+oer_type_decoder_f oer_decode_primitive;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* OER_DECODER_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/oer_encoder.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/oer_encoder.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/oer_encoder.h	(working copy)
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	OER_ENCODER_H
+#define	OER_ENCODER_H
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/*
+ * The Octet Encoding Rules (OER, X.696 08/2015) encoder for any type.
+ * This function may be invoked directly by the application.
+ * Produces CANONICAL-OER output compatible with CANONICAL-OER
+ * and BASIC-OER decoders.
+ */
+asn_enc_rval_t oer_encode(const struct asn_TYPE_descriptor_s *type_descriptor,
+                          const void *struct_ptr, /* Structure to be encoded */
+                          asn_app_consume_bytes_f *consume_bytes_cb,
+                          void *app_key /* Arbitrary callback argument */
+);
+
+/* A variant of oer_encode() which encodes data into the pre-allocated buffer */
+asn_enc_rval_t oer_encode_to_buffer(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_oer_constraints_t *constraints,
+    const void *struct_ptr, /* Structure to be encoded */
+    void *buffer,           /* Pre-allocated buffer */
+    size_t buffer_size      /* Initial buffer size (maximum) */
+);
+
+/*
+ * Type of the generic OER encoder.
+ */
+typedef asn_enc_rval_t(oer_type_encoder_f)(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_oer_constraints_t *constraints,
+    const void *struct_ptr,                    /* Structure to be encoded */
+    asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */
+    void *app_key                              /* Arbitrary callback argument */
+);
+
+/*
+ * Write out the Open Type (X.696 (08/2015), #30).
+ * RETURN VALUES:
+ *  -1: Fatal error encoding the type.
+ *  >0: Number of bytes serialized.
+ */
+ssize_t oer_open_type_put(const struct asn_TYPE_descriptor_s *td,
+                          const asn_oer_constraints_t *constraints,
+                          const void *struct_ptr,
+                          asn_app_consume_bytes_f *consume_bytes_cb,
+                          void *app_key);
+
+
+/*
+ * Length-prefixed buffer encoding for primitive types.
+ */
+oer_type_encoder_f oer_encode_primitive;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* OER_ENCODER_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/oer_support.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/oer_support.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/oer_support.h	(working copy)
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	OER_SUPPORT_H
+#define	OER_SUPPORT_H
+
+#include <asn_system.h>		/* Platform-specific types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Pre-computed OER constraints.
+ */
+typedef struct asn_oer_constraint_number_s {
+    unsigned width;    /* ±8,4,2,1 fixed bytes */
+    unsigned positive; /* 1 for unsigned number, 0 for signed */
+} asn_oer_constraint_number_t;
+typedef struct asn_oer_constraints_s {
+    asn_oer_constraint_number_t value;
+    ssize_t size;    /* -1 (no constraint) or >= 0 */
+} asn_oer_constraints_t;
+
+
+/*
+ * Fetch the length determinant (X.696 (08/2015), #8.6) into *len_r.
+ * RETURN VALUES:
+ *       0:     More data expected than bufptr contains.
+ *      -1:     Fatal error deciphering length.
+ *      >0:     Number of bytes used from bufptr.
+ */
+ssize_t oer_fetch_length(const void *bufptr, size_t size, size_t *len_r);
+
+/*
+ * Serialize OER length. Returns the number of bytes serialized
+ * or -1 if a given callback returned with negative result.
+ */
+ssize_t oer_serialize_length(size_t length, asn_app_consume_bytes_f *cb, void *app_key);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* OER_SUPPORT_H */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/per_decoder.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/per_decoder.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/per_decoder.h	(working copy)
@@ -0,0 +1,82 @@
+/*-
+ * Copyright (c) 2005-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_PER_DECODER_H_
+#define	_PER_DECODER_H_
+
+#include <asn_application.h>
+#include <per_support.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/*
+ * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1.
+ * On success, this call always returns (.consumed >= 1), as per #11.1.3.
+ */
+asn_dec_rval_t uper_decode_complete(
+    const struct asn_codec_ctx_s *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */
+    void **struct_ptr,  /* Pointer to a target structure's pointer */
+    const void *buffer, /* Data to be decoded */
+    size_t size         /* Size of data buffer */
+);
+
+/*
+ * Unaligned PER decoder of any ASN.1 type. May be invoked by the application.
+ * WARNING: This call returns the number of BITS read from the stream. Beware.
+ */
+asn_dec_rval_t uper_decode(
+    const struct asn_codec_ctx_s *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */
+    void **struct_ptr,  /* Pointer to a target structure's pointer */
+    const void *buffer, /* Data to be decoded */
+    size_t size,        /* Size of the input data buffer, in bytes */
+    int skip_bits,      /* Number of unused leading bits, 0..7 */
+    int unused_bits     /* Number of unused tailing bits, 0..7 */
+);
+
+/*
+ * Aligned PER decoder of a "complete encoding" as per X.691#10.1.
+ * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3.
+ */
+asn_dec_rval_t aper_decode_complete(
+       const struct asn_codec_ctx_s *opt_codec_ctx,
+       const struct asn_TYPE_descriptor_s *type_descriptor,	/* Type to decode */
+       void **struct_ptr,	/* Pointer to a target structure's pointer */
+       const void *buffer,	/* Data to be decoded */
+       size_t size		/* Size of data buffer */
+									);
+
+/*
+ * Aligned PER decoder of any ASN.1 type. May be invoked by the application.
+ * WARNING: This call returns the number of BITS read from the stream. Beware.
+ */
+asn_dec_rval_t aper_decode(
+      const struct asn_codec_ctx_s *opt_codec_ctx,
+      const struct asn_TYPE_descriptor_s *type_descriptor,	/* Type to decode */
+      void **struct_ptr,	/* Pointer to a target structure's pointer */
+      const void *buffer,	/* Data to be decoded */
+      size_t size,		/* Size of data buffer */
+      int skip_bits,		/* Number of unused leading bits, 0..7 */
+      int unused_bits		/* Number of unused tailing bits, 0..7 */
+      );
+
+/*
+ * Type of the type-specific PER decoder function.
+ */
+typedef asn_dec_rval_t(per_type_decoder_f)(
+    const asn_codec_ctx_t *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints, void **struct_ptr,
+    asn_per_data_t *per_data);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PER_DECODER_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/per_encoder.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/per_encoder.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/per_encoder.h	(working copy)
@@ -0,0 +1,93 @@
+/*-
+ * Copyright (c) 2006-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_PER_ENCODER_H_
+#define	_PER_ENCODER_H_
+
+#include <asn_application.h>
+#include <per_support.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/*
+ * Unaligned PER encoder of any ASN.1 type. May be invoked by the application.
+ * WARNING: This function returns the number of encoded bits in the .encoded
+ * field of the return value. Use the following formula to convert to bytes:
+ * 	bytes = ((.encoded + 7) / 8)
+ */
+asn_enc_rval_t uper_encode(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints,
+    const void *struct_ptr,                    /* Structure to be encoded */
+    asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */
+    void *app_key                              /* Arbitrary callback argument */
+);
+
+asn_enc_rval_t aper_encode(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints,
+    const void *struct_ptr,                     /* Structure to be encoded */
+    asn_app_consume_bytes_f *consume_bytes_cb,  /* Data collector */
+    void *app_key                               /* Arbitrary callback argument */
+);
+
+/*
+ * A variant of uper_encode() which encodes data into the existing buffer
+ * WARNING: This function returns the number of encoded bits in the .encoded
+ * field of the return value.
+ */
+asn_enc_rval_t uper_encode_to_buffer(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints,
+    const void *struct_ptr, /* Structure to be encoded */
+    void *buffer,           /* Pre-allocated buffer */
+    size_t buffer_size      /* Initial buffer size (max) */
+);
+
+asn_enc_rval_t aper_encode_to_buffer(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints,
+    const void *struct_ptr,  /* Structure to be encoded */
+    void *buffer,            /* Pre-allocated buffer */
+    size_t buffer_size       /* Initial buffer size (max) */
+);
+/*
+ * A variant of uper_encode_to_buffer() which allocates buffer itself.
+ * Returns the number of bytes in the buffer or -1 in case of failure.
+ * WARNING: This function produces a "Production of the complete encoding",
+ * with length of at least one octet. Contrast this to precise bit-packing
+ * encoding of uper_encode() and uper_encode_to_buffer().
+ */
+ssize_t uper_encode_to_new_buffer(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints,
+    const void *struct_ptr, /* Structure to be encoded */
+    void **buffer_r         /* Buffer allocated and returned */
+);
+
+ssize_t
+aper_encode_to_new_buffer(
+    const struct asn_TYPE_descriptor_s *td,
+    const asn_per_constraints_t *constraints,
+    const void *sptr,
+    void **buffer_r
+);
+
+/*
+ * Type of the generic PER encoder function.
+ */
+typedef asn_enc_rval_t(per_type_encoder_f)(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const asn_per_constraints_t *constraints, const void *struct_ptr,
+    asn_per_outp_t *per_output);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PER_ENCODER_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/per_opentype.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/per_opentype.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/per_opentype.h	(working copy)
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2007-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_PER_OPENTYPE_H_
+#define	_PER_OPENTYPE_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                  const asn_TYPE_descriptor_t *td,
+                                  const asn_per_constraints_t *constraints,
+                                  void **sptr, asn_per_data_t *pd);
+
+int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx,
+                        asn_per_data_t *pd);
+
+/*
+ * X.691 (2015/08), #11.2
+ * Returns -1 if error is encountered. 0 if all OK.
+ */
+int uper_open_type_put(const asn_TYPE_descriptor_t *td,
+                       const asn_per_constraints_t *constraints,
+                       const void *sptr, asn_per_outp_t *po);
+
+asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx,
+                                  const asn_TYPE_descriptor_t *td,
+                                  const asn_per_constraints_t *constraints,
+                                  void **sptr, asn_per_data_t *pd);
+
+
+int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd);
+
+int aper_open_type_put(const asn_TYPE_descriptor_t *td,
+                       const asn_per_constraints_t *constraints,
+                       const void *sptr, asn_per_outp_t *po);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PER_OPENTYPE_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/per_support.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/per_support.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/per_support.h	(working copy)
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2005-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_PER_SUPPORT_H_
+#define	_PER_SUPPORT_H_
+
+#include <asn_system.h>		/* Platform-specific types */
+#include <asn_bit_data.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Pre-computed PER constraints.
+ */
+typedef struct asn_per_constraint_s {
+	enum asn_per_constraint_flags {
+		APC_UNCONSTRAINED	= 0x0,	/* No PER visible constraints */
+		APC_SEMI_CONSTRAINED	= 0x1,	/* Constrained at "lb" */
+		APC_CONSTRAINED		= 0x2,	/* Fully constrained */
+		APC_EXTENSIBLE		= 0x4	/* May have extension */
+	} flags;
+	int  range_bits;		/* Full number of bits in the range */
+	int  effective_bits;		/* Effective bits */
+	long lower_bound;		/* "lb" value */
+	long upper_bound;		/* "ub" value */
+} asn_per_constraint_t;
+typedef struct asn_per_constraints_s {
+	asn_per_constraint_t value;
+	asn_per_constraint_t size;
+	int (*value2code)(unsigned int value);
+	int (*code2value)(unsigned int code);
+} asn_per_constraints_t;
+
+/* Temporary compatibility layer. Will get removed. */
+typedef struct asn_bit_data_s asn_per_data_t;
+#define per_get_few_bits(data, bits)   asn_get_few_bits(data, bits)
+#define per_get_undo(data, bits)   asn_get_undo(data, bits)
+#define per_get_many_bits(data, dst, align, bits) \
+    asn_get_many_bits(data, dst, align, bits)
+
+/*
+ * X.691 (08/2015) #11.9 "General rules for encoding a length determinant"
+ * Get the length "n" from the Unaligned PER stream.
+ */
+ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits,
+                        size_t lower_bound, int *repeat);
+
+ssize_t aper_get_length(asn_per_data_t *pd, int range,
+                        int effective_bound_bits, int *repeat);
+
+/*
+ * Get the normally small length "n".
+ */
+ssize_t uper_get_nslength(asn_per_data_t *pd);
+ssize_t aper_get_nslength(asn_per_data_t *pd);
+
+/*
+ * Get the normally small non-negative whole number.
+ */
+ssize_t uper_get_nsnnwn(asn_per_data_t *pd);
+ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range);
+
+/* X.691-2008/11, #11.5.6 */
+int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *v, int nbits);
+
+
+/* Temporary compatibility layer. Will get removed. */
+typedef struct asn_bit_outp_s asn_per_outp_t;
+#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits)
+#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits)
+#define per_put_aligned_flush(out) asn_put_aligned_flush(out)
+
+
+/*
+ * Rebase the given value as an offset into the range specified by the
+ * lower bound (lb) and upper bound (ub).
+ * RETURN VALUES:
+ *  -1: Conversion failed due to range problems.
+ *   0: Conversion was successful.
+ */
+int per_long_range_rebase(long v, long lb, long ub, unsigned long *output);
+/* The inverse operation: restores the value by the offset and its bounds. */
+int per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp);
+
+/* X.691-2008/11, #11.5 */
+int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, int nbits);
+
+/*
+ * X.691 (08/2015) #11.9 "General rules for encoding a length determinant"
+ * Put the length "whole_length" to the Unaligned PER stream.
+ * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed.
+ * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block.
+ * This function returns the number of units which may be flushed
+ * in the next units saving iteration.
+ */
+ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length,
+                        int *opt_need_eom);
+
+ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length);
+
+/* Align the current bit position to octet bundary */
+int aper_put_align(asn_per_outp_t *po);
+int32_t aper_get_align(asn_per_data_t *pd);
+
+/*
+ * Put the normally small length "n" to the Unaligned PER stream.
+ * Returns 0 or -1.
+ */
+int uper_put_nslength(asn_per_outp_t *po, size_t length);
+
+int aper_put_nslength(asn_per_outp_t *po, size_t length);
+
+/*
+ * Put the normally small non-negative whole number.
+ */
+int uper_put_nsnnwn(asn_per_outp_t *po, int n);
+
+int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PER_SUPPORT_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/standard-modules/ASN1-Object-Identifier-Module.asn1
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/standard-modules/ASN1-Object-Identifier-Module.asn1	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/standard-modules/ASN1-Object-Identifier-Module.asn1	(working copy)
@@ -0,0 +1,43 @@
+ASN1-Object-Identifier-Module { joint-iso-itu-t asn1(1) specification(0) modules(0) object-identifiers(1) }  
+DEFINITIONS ::= BEGIN 
+
+ -- NumericString ASN.1 type (see 37.3) -- 
+ numericString OBJECT IDENTIFIER ::=  { joint-iso-itu-t asn1(1) specification(0) characterStrings(1) numericString(0) } 
+
+ -- PrintableString ASN.1 type (see 37.5) -- 
+ printableString OBJECT IDENTIFIER ::= { joint-iso-itu-t asn1(1) specification(0) characterStrings(1) printableString(1) } 
+
+ -- ASN.1 Character Module (see 38.1) -- 
+ asn1CharacterModule OBJECT IDENTIFIER ::= { joint-iso-itu-t asn1(1) specification(0) modules(0) iso10646(0) } 
+
+ -- ASN.1 Object Identifier Module (this module) -- 
+ asn1ObjectIdentifierModule OBJECT IDENTIFIER ::= { joint-iso-itu-t asn1(1) specification(0) modules(0) object-identifiers(1) } 
+
+ -- BER encoding of a single ASN.1 type -- 
+ ber OBJECT IDENTIFIER ::=  { joint-iso-itu-t asn1(1) basic-encoding(1) } 
+
+ -- CER encoding of a single ASN.1 type -- 
+ cer OBJECT IDENTIFIER ::=  { joint-iso-itu-t asn1(1) ber-derived(2) canonical-encoding(0) } 
+
+ -- DER encoding of a single ASN.1 type -- 
+ der OBJECT IDENTIFIER ::=  { joint-iso-itu-t asn1(1) ber-derived(2) distinguished-encoding(1) } 
+
+ -- PER encoding of a single ASN.1 type (basic aligned) -- 
+ perBasicAligned OBJECT IDENTIFIER ::=  { joint-iso-itu-t asn1(1) packed-encoding(3) basic(0) aligned(0) } 
+
+ -- PER encoding of a single ASN.1 type (basic unaligned) -- 
+ perBasicUnaligned OBJECT IDENTIFIER ::=  { joint-iso-itu-t asn1(1) packed-encoding(3) basic(0) unaligned(1) } 
+
+ -- PER encoding of a single ASN.1 type (canonical aligned) -- 
+ perCanonicalAligned OBJECT IDENTIFIER ::= { joint-iso-itu-t asn1(1) packed-encoding(3) canonical(1) aligned(0) } 
+
+ -- PER encoding of a single ASN.1 type (canonical unaligned) -- 
+ perCanonicalUnaligned OBJECT IDENTIFIER ::= { joint-iso-itu-t asn1(1) packed-encoding(3) canonical(1) unaligned(1) } 
+
+ -- XER encoding of a single ASN.1 type (basic) -- 
+ xerBasic OBJECT IDENTIFIER ::=  {joint-iso-itu-t asn1(1) xml-encoding(5) basic(0) } 
+
+ -- XER encoding of a single ASN.1 type (canonical) -- 
+ xerCanonical OBJECT IDENTIFIER ::=  {joint-iso-itu-t asn1(1) xml-encoding(5) canonical(1) } 
+
+END -- ASN1-Object-Identifier-Module --
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/standard-modules/ASN1C-UsefulInformationObjectClasses.asn1
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/standard-modules/ASN1C-UsefulInformationObjectClasses.asn1	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/standard-modules/ASN1C-UsefulInformationObjectClasses.asn1	(working copy)
@@ -0,0 +1,31 @@
+/*
+ * This specification contains pervasive ASN.1 information object classes.
+ * These classes are defined as "useful", and are available in any module
+ * without the necessity for explicit import.
+ */
+ASN1C-UsefulInformationObjectClasses
+	{ iso(1) org(3) dod(6) internet (1) private(4) enterprise(1)
+		spelio(9363) software(1) asn1c(5)
+		standard-modules(3) auto-imported(0) 1 }
+DEFINITIONS ::= BEGIN
+
+	/*
+	 * X.681-0207, Annex A
+	 * The TYPE-IDENTIFIER information object class
+	 */
+	TYPE-IDENTIFIER ::= CLASS {
+	    &id		OBJECT IDENTIFIER UNIQUE,
+	    &Type
+	} WITH SYNTAX { &Type IDENTIFIED BY &id }
+
+	/*
+	 * X.681-0207, Annex B
+	 * The ABSTRACT-SYNTAX information object class
+	 */
+	ABSTRACT-SYNTAX ::= CLASS {
+	    &id		OBJECT IDENTIFIER UNIQUE,
+	    &Type,
+	    &property	BIT STRING { handles-invalid-encodings(0) } DEFAULT {}
+	} WITH SYNTAX { &Type IDENTIFIED BY &id [HAS PROPERTY &property] }
+
+END
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/standard-modules/README
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/standard-modules/README	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/standard-modules/README	(working copy)
@@ -0,0 +1,2 @@
+All *.asn1 files in this directory will be automatically
+picked up by the asn1c during compilation of any user specified module.
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/xer_decoder.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/xer_decoder.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/xer_decoder.h	(working copy)
@@ -0,0 +1,106 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_XER_DECODER_H_
+#define	_XER_DECODER_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/*
+ * The XER decoder of any ASN.1 type. May be invoked by the application.
+ * Decodes CANONICAL-XER and BASIC-XER.
+ */
+asn_dec_rval_t xer_decode(
+    const struct asn_codec_ctx_s *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    void **struct_ptr,  /* Pointer to a target structure's pointer */
+    const void *buffer, /* Data to be decoded */
+    size_t size         /* Size of data buffer */
+);
+
+/*
+ * Type of the type-specific XER decoder function.
+ */
+typedef asn_dec_rval_t(xer_type_decoder_f)(
+    const asn_codec_ctx_t *opt_codec_ctx,
+    const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr,
+    const char *opt_mname, /* Member name */
+    const void *buf_ptr, size_t size);
+
+/*******************************
+ * INTERNALLY USEFUL FUNCTIONS *
+ *******************************/
+
+/*
+ * Generalized function for decoding the primitive values.
+ * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8
+ * and others. This function should not be used by applications, as its API
+ * is subject to changes.
+ */
+asn_dec_rval_t xer_decode_general(
+    const asn_codec_ctx_t *opt_codec_ctx,
+    asn_struct_ctx_t *ctx, /* Type decoder context */
+    void *struct_key,      /* Treated as opaque pointer */
+    const char *xml_tag,   /* Expected XML tag name */
+    const void *buf_ptr, size_t size,
+    int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf,
+                                      size_t chunk_size),
+    ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf,
+                             size_t chunk_size, int have_more));
+
+
+/*
+ * Fetch the next XER (XML) token from the stream.
+ * The function returns the number of bytes occupied by the chunk type,
+ * returned in the _ch_type. The _ch_type is only set (and valid) when
+ * the return value is >= 0.
+ */
+  typedef enum pxer_chunk_type {
+	PXER_WMORE,     /* Chunk type is not clear, more data expected. */
+	PXER_TAG,	    /* Complete XER tag */
+	PXER_TEXT,	    /* Plain text between XER tags */
+	PXER_COMMENT	/* A comment, may be part of */
+  } pxer_chunk_type_e;
+ssize_t xer_next_token(int *stateContext,
+	const void *buffer, size_t size, pxer_chunk_type_e *_ch_type);
+
+/*
+ * This function checks the buffer against the tag name is expected to occur.
+ */
+  typedef enum xer_check_tag {
+	XCT_BROKEN	= 0,	/* The tag is broken */
+	XCT_OPENING	= 1,	/* This is the <opening> tag */
+	XCT_CLOSING	= 2,	/* This is the </closing> tag */
+	XCT_BOTH	= 3,	/* This is the <modified/> tag */
+	XCT__UNK__MASK	= 4,	/* Mask of everything unexpected */
+	XCT_UNKNOWN_OP	= 5,	/* Unexpected <opening> tag */
+	XCT_UNKNOWN_CL	= 6,	/* Unexpected </closing> tag */
+	XCT_UNKNOWN_BO	= 7	/* Unexpected <modified/> tag */
+  } xer_check_tag_e;
+xer_check_tag_e xer_check_tag(const void *buf_ptr, int size,
+		const char *need_tag);
+
+/*
+ * Get the number of bytes consisting entirely of XER whitespace characters.
+ * RETURN VALUES:
+ * >=0:	Number of whitespace characters in the string.
+ */
+size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size);
+
+/*
+ * Skip the series of anticipated extensions.
+ */
+int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _XER_DECODER_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/xer_encoder.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/xer_encoder.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/xer_encoder.h	(working copy)
@@ -0,0 +1,83 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_XER_ENCODER_H_
+#define	_XER_ENCODER_H_
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;	/* Forward declaration */
+
+/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */
+enum xer_encoder_flags_e {
+	/* Mode of encoding */
+	XER_F_BASIC	= 0x01,	/* BASIC-XER (pretty-printing) */
+	XER_F_CANONICAL	= 0x02	/* Canonical XER (strict rules) */
+};
+
+/*
+ * The XER encoder of any type. May be invoked by the application.
+ * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags).
+ */
+asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor,
+                          const void *struct_ptr, /* Structure to be encoded */
+                          enum xer_encoder_flags_e xer_flags,
+                          asn_app_consume_bytes_f *consume_bytes_cb,
+                          void *app_key /* Arbitrary callback argument */
+);
+
+/*
+ * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC)
+ * output into the chosen file pointer.
+ * RETURN VALUES:
+ * 	 0: The structure is printed.
+ * 	-1: Problem printing the structure.
+ * WARNING: No sensible errno value is returned.
+ */
+int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td,
+               const void *struct_ptr);
+
+/*
+ * A helper function that uses XER encoding/decoding to verify that:
+ * - Both structures encode into the same BASIC XER.
+ * - Both resulting XER byte streams can be decoded back.
+ * - Both decoded structures encode into the same BASIC XER (round-trip).
+ * All of this verifies equivalence between structures and a round-trip.
+ * ARGUMENTS:
+ *  (opt_debug_stream)  - If specified, prints ongoing details.
+ */
+enum xer_equivalence_e {
+    XEQ_SUCCESS,          /* The only completely positive return value */
+    XEQ_FAILURE,          /* General failure */
+    XEQ_ENCODE1_FAILED,   /* First sructure XER encoding failed */
+    XEQ_ENCODE2_FAILED,   /* Second structure XER encoding failed */
+    XEQ_DIFFERENT,        /* Structures encoded into different XER */
+    XEQ_DECODE_FAILED,    /* Decode of the XER data failed */
+    XEQ_ROUND_TRIP_FAILED /* Bad round-trip */
+};
+enum xer_equivalence_e xer_equivalent(
+    const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1,
+    const void *struct2, FILE *opt_debug_stream);
+
+/*
+ * Type of the generic XER encoder.
+ */
+typedef asn_enc_rval_t(xer_type_encoder_f)(
+    const struct asn_TYPE_descriptor_s *type_descriptor,
+    const void *struct_ptr, /* Structure to be encoded */
+    int ilevel,             /* Level of indentation */
+    enum xer_encoder_flags_e xer_flags,
+    asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */
+    void *app_key                              /* Arbitrary callback argument */
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _XER_ENCODER_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/xer_support.h
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/xer_support.h	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/asn1c_skeletons/xer_support.h	(working copy)
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com.
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef	_XER_SUPPORT_H_
+#define	_XER_SUPPORT_H_
+
+#include <asn_system.h>		/* Platform-specific types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Types of data transferred to the application.
+ */
+typedef enum {
+	PXML_TEXT,	/* Plain text between XML tags. */
+	PXML_TAG,	/* A tag, starting with '<'. */
+	PXML_COMMENT,	/* An XML comment, including "<!--" and "-->". */
+	/* 
+	 * The following chunk types are reported if the chunk
+	 * terminates the specified XML element.
+	 */
+	PXML_TAG_END,		/* Tag ended */
+	PXML_COMMENT_END	/* Comment ended */
+} pxml_chunk_type_e;
+
+/*
+ * Callback function that is called by the parser when parsed data is
+ * available. The _opaque is the pointer to a field containing opaque user 
+ * data specified in pxml_create() call. The chunk type is _type and the text 
+ * data is the piece of buffer identified by _bufid (as supplied to
+ * pxml_feed() call) starting at offset _offset and of _size bytes size. 
+ * The chunk is NOT '\0'-terminated.
+ */
+typedef int (pxml_callback_f)(pxml_chunk_type_e _type,
+	const void *_chunk_data, size_t _chunk_size, void *_key);
+
+/*
+ * Parse the given buffer as it were a chunk of XML data.
+ * Invoke the specified callback each time the meaninful data is found.
+ * This function returns number of bytes consumed from the bufer.
+ * It will always be lesser than or equal to the specified _size.
+ * The next invocation of this function must account the difference.
+ */
+ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size,
+	pxml_callback_f *cb, void *_key);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _XER_SUPPORT_H_ */
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/test/hexdump_to_array.sh
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/test/hexdump_to_array.sh	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/test/hexdump_to_array.sh	(working copy)
@@ -0,0 +1,24 @@
+#!/bin/bash
+# Copy hexdump for the field to be decoded from packet capture. 
+# Copy the hexdump to a file and execute this script with the filename as argument
+# Copy the output values as an array to be passed to decoder.
+# Ex: hexdump_to_array.sh sample_hex_dump.txt 
+INPUT_FILE="$1"
+
+if [[ -z "$INPUT_FILE" || ! -f "$INPUT_FILE" ]]; then
+    echo "Usage: $0 <hexdump-file>"
+    exit 1
+fi
+
+hex_only=$(awk '{$1=""; print}' "$INPUT_FILE")
+
+clean_hex=$(echo "$hex_only" | sed -E 's/:[[:space:]]+//;s/\s{2,}.*//')
+
+c_array=""
+for byte in $clean_hex; do
+    c_array+="0x$byte, "
+done
+
+c_array=$(echo "$c_array" | sed 's/, *$//')
+echo "$c_array"
+

Property changes on: usr/click/lib/libasn1c/test/hexdump_to_array.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/test/parse_connect_msg.c
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/test/parse_connect_msg.c	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/test/parse_connect_msg.c	(working copy)
@@ -0,0 +1,110 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include "Setup-UUIE.h"
+#include "Connect-UUIE.h"
+#include "per_decoder.h"
+#include "CallIdentifier.h"
+
+void parse_h225_connect(const uint8_t *data, size_t data_len) {
+    char ip_str[20];
+    asn_dec_rval_t rval;
+    Connect_UUIE_t *connect_msg = NULL;
+
+    rval = aper_decode_complete(NULL, &asn_DEF_Connect_UUIE, (void **)&connect_msg, data, data_len);
+    printf("error is %d\n. ", rval.code);
+    if (rval.code == RC_OK) {
+        printf("H.225 Setup message decoded successfully!\n");
+        printf("protocol Identifier size: %d\n", connect_msg->protocolIdentifier.size);
+        ASN_STRUCT_FREE(asn_DEF_Connect_UUIE, connect_msg);
+    } else {
+        fprintf(stderr, "Failed to decode H.225 Setup message.\n");
+    }
+ 
+}
+
+int main() {
+    uint8_t hex_data[] = {
+	 0xc0, 0x06, 0x00, 0x08, 0x91, 0x4a, 0x00, 0x06, 0x00, 0xd2, 0x04, 0xce,
+	 0x27, 0x48, 0xb9, 0x24, 0xc0, 0x82, 0x01, 0x01, 0x00, 0x07, 0x54, 0x61,
+	 0x6e, 0x64, 0x62, 0x65, 0x72, 0x67, 0x03, 0x34, 0x31, 0x34, 0x35, 0x50,
+	 0x82, 0x01, 0x01, 0x00, 0x08, 0x54, 0x61, 0x6e, 0x64, 0x62, 0x65, 0x72,
+	 0x67, 0x00, 0xdb, 0xe8, 0x82, 0xd6, 0x1f, 0x00, 0x00, 0x1f, 0x2d, 0x77,
+	 0xe4, 0x4d, 0x02, 0x13, 0x50, 0x49, 0x1d, 0x4c, 0x00, 0x11, 0x00, 0x91,
+	 0xe3, 0x82, 0xd6, 0x1f, 0x00, 0x00, 0x1f, 0x2d, 0x77, 0xe4, 0x4d, 0x02,
+	 0x13, 0x50, 0x49, 0x83, 0x2d, 0x03, 0x10, 0x00, 0x07, 0x00, 0x08, 0x81,
+	 0x6b, 0x00, 0x01, 0x05, 0x00, 0x04, 0x00, 0x72, 0x33, 0x2e, 0xca, 0x40,
+	 0x3e, 0x6c, 0xf8, 0xa8, 0x62, 0xa5, 0xe4, 0x70, 0xcc, 0x54, 0xfb, 0xa6,
+	 0x76, 0x02, 0xa1, 0xdb, 0x2e, 0x4a, 0x8b, 0xb3, 0xef, 0x70, 0xf1, 0x41,
+	 0xc4, 0xba, 0x94, 0xcc, 0x54, 0x3c, 0x0a, 0x2f, 0x01, 0xca, 0x18, 0x61,
+	 0x09, 0x8d, 0x03, 0x95, 0x54, 0x19, 0x18, 0x83, 0xf9, 0xcd, 0x99, 0x5d,
+	 0xbb, 0x3d, 0x70, 0xae, 0xca, 0xa0, 0x85, 0xb9, 0x66, 0x8e, 0x3e, 0x31,
+	 0x15, 0xe6, 0xc9, 0xc5, 0xec, 0xd9, 0xcf, 0x75, 0x50, 0x54, 0x69, 0xdd,
+	 0x9d, 0x34, 0x65, 0x51, 0x9b, 0x2a, 0x6d, 0xe5, 0x92, 0xbb, 0x57, 0x33,
+	 0x8d, 0x26, 0x94, 0x64, 0xca, 0x23, 0x4a, 0xd2, 0x15, 0x80, 0xf0, 0x78,
+	 0xac, 0x78, 0xc8, 0xe6, 0x21, 0xd6, 0x0c, 0x85, 0x51, 0x01, 0x5a, 0x61,
+	 0x1d, 0x6b, 0x1f, 0x4d, 0x5a, 0xa5, 0x82, 0x9a, 0xbb, 0xe2, 0x35, 0x72,
+	 0x2a, 0xdf, 0x86, 0x04, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+	 0xff, 0xc9, 0x0f, 0xda, 0xa2, 0x21, 0x68, 0xc2, 0x34, 0xc4, 0xc6, 0x62,
+	 0x8b, 0x80, 0xdc, 0x1c, 0xd1, 0x29, 0x02, 0x4e, 0x08, 0x8a, 0x67, 0xcc,
+	 0x74, 0x02, 0x0b, 0xbe, 0xa6, 0x3b, 0x13, 0x9b, 0x22, 0x51, 0x4a, 0x08,
+	 0x79, 0x8e, 0x34, 0x04, 0xdd, 0xef, 0x95, 0x19, 0xb3, 0xcd, 0x3a, 0x43,
+	 0x1b, 0x30, 0x2b, 0x0a, 0x6d, 0xf2, 0x5f, 0x14, 0x37, 0x4f, 0xe1, 0x35,
+	 0x6d, 0x6d, 0x51, 0xc2, 0x45, 0xe4, 0x85, 0xb5, 0x76, 0x62, 0x5e, 0x7e,
+	 0xc6, 0xf4, 0x4c, 0x42, 0xe9, 0xa6, 0x37, 0xed, 0x6b, 0x0b, 0xff, 0x5c,
+	 0xb6, 0xf4, 0x06, 0xb7, 0xed, 0xee, 0x38, 0x6b, 0xfb, 0x5a, 0x89, 0x9f,
+	 0xa5, 0xae, 0x9f, 0x24, 0x11, 0x7c, 0x4b, 0x1f, 0xe6, 0x49, 0x28, 0x66,
+	 0x51, 0xec, 0xe6, 0x53, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+	 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10,
+	 0x00, 0x07, 0x00, 0x08, 0x81, 0x6b, 0x00, 0x03, 0x2b, 0x00, 0x04, 0x00,
+	 0x72, 0x33, 0x2e, 0xca, 0x40, 0x3e, 0x6c, 0xf8, 0xa8, 0x62, 0xa5, 0xe4,
+	 0x70, 0xcc, 0x54, 0xfb, 0xa6, 0x76, 0x02, 0xa1, 0xdb, 0x2e, 0x4a, 0x8b,
+	 0xb3, 0xef, 0x70, 0xf1, 0x41, 0xc4, 0xba, 0x94, 0xcc, 0x54, 0x3c, 0x0a,
+	 0x2f, 0x01, 0xca, 0x18, 0x61, 0x09, 0x8d, 0x03, 0x95, 0x54, 0x19, 0x18,
+	 0x83, 0xf9, 0xcd, 0x99, 0x5d, 0xbb, 0x3d, 0x70, 0xae, 0xca, 0xa0, 0x85,
+	 0xb9, 0x66, 0x8e, 0x3e, 0x31, 0x15, 0xe6, 0xc9, 0xc5, 0xec, 0xd9, 0xcf,
+	 0x75, 0x50, 0x54, 0x69, 0xdd, 0x9d, 0x34, 0x65, 0x51, 0x9b, 0x2a, 0x6d,
+	 0xe5, 0x92, 0xbb, 0x57, 0x33, 0x8d, 0x26, 0x94, 0x64, 0xca, 0x23, 0x4a,
+	 0xd2, 0x15, 0x80, 0xf0, 0x78, 0xac, 0x78, 0xc8, 0xe6, 0x21, 0xd6, 0x0c,
+	 0x85, 0x51, 0x01, 0x5a, 0x61, 0x1d, 0x6b, 0x1f, 0x4d, 0x5a, 0xa5, 0x82,
+	 0x9a, 0xbb, 0xe2, 0x35, 0x72, 0x2a, 0xdf, 0x86, 0x04, 0x00, 0xff, 0xff,
+	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc9, 0x0f, 0xda, 0xa2, 0x21, 0x68,
+	 0xc2, 0x34, 0xc4, 0xc6, 0x62, 0x8b, 0x80, 0xdc, 0x1c, 0xd1, 0x29, 0x02,
+	 0x4e, 0x08, 0x8a, 0x67, 0xcc, 0x74, 0x02, 0x0b, 0xbe, 0xa6, 0x3b, 0x13,
+	 0x9b, 0x22, 0x51, 0x4a, 0x08, 0x79, 0x8e, 0x34, 0x04, 0xdd, 0xef, 0x95,
+	 0x19, 0xb3, 0xcd, 0x3a, 0x43, 0x1b, 0x30, 0x2b, 0x0a, 0x6d, 0xf2, 0x5f,
+	 0x14, 0x37, 0x4f, 0xe1, 0x35, 0x6d, 0x6d, 0x51, 0xc2, 0x45, 0xe4, 0x85,
+	 0xb5, 0x76, 0x62, 0x5e, 0x7e, 0xc6, 0xf4, 0x4c, 0x42, 0xe9, 0xa6, 0x37,
+	 0xed, 0x6b, 0x0b, 0xff, 0x5c, 0xb6, 0xf4, 0x06, 0xb7, 0xed, 0xee, 0x38,
+	 0x6b, 0xfb, 0x5a, 0x89, 0x9f, 0xa5, 0xae, 0x9f, 0x24, 0x11, 0x7c, 0x4b,
+	 0x1f, 0xe6, 0x49, 0x28, 0x66, 0x51, 0xec, 0xe6, 0x53, 0x81, 0xff, 0xff,
+	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x08, 0x81, 0x6b, 0x00,
+	 0x03, 0x18, 0x01, 0x00, 0x01, 0x00
+    };
+    size_t data_len = sizeof(hex_data);
+    printf ("data len : %d\n", data_len);
+    parse_h225_connect(hex_data, data_len);
+    return 0;
+}
+
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/test/parse_setup_msg.c
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/test/parse_setup_msg.c	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/test/parse_setup_msg.c	(working copy)
@@ -0,0 +1,111 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include "Setup-UUIE.h"
+#include "per_decoder.h"
+#include "CallIdentifier.h"
+
+void parse_h225_setup(uint8_t *data, size_t data_len) {
+    char ip_str[20];
+    asn_dec_rval_t rval;
+    Setup_UUIE_t *setup_msg = NULL;
+
+    rval = aper_decode_complete(NULL, &asn_DEF_Setup_UUIE, (void **)&setup_msg, data, data_len);
+    if (rval.code == RC_OK) {
+        printf("H.225 Setup message decoded successfully!\n");
+        printf("Protocol Identifier size: %d\n", setup_msg->protocolIdentifier.size);
+        ASN_STRUCT_FREE(asn_DEF_Setup_UUIE, setup_msg);
+    } else {
+        fprintf(stderr, "Failed to decode H.225 Setup message.\n");
+    }
+}
+
+int main() {
+    uint8_t sample_data[] = { 
+	 0xa8, 0x06, 0x00, 0x08, 0x91, 0x4a, 0x00, 0x05, 0x01, 0x40, 0x0d, 0x00,
+	 0x47, 0x00, 0x37, 0x00, 0x35, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2d, 0x00,
+	 0x36, 0x00, 0x37, 0x00, 0x33, 0x00, 0x42, 0x00, 0x30, 0x00, 0x30, 0x00,
+	 0x46, 0x00, 0x32, 0x22, 0xc0, 0xb5, 0x00, 0x23, 0x31, 0x0b, 0x50, 0x6f,
+	 0x6c, 0x79, 0x63, 0x6f, 0x6d, 0x47, 0x37, 0x35, 0x30, 0x30, 0x0b, 0x34,
+	 0x2e, 0x31, 0x2e, 0x33, 0x2d, 0x33, 0x39, 0x34, 0x30, 0x30, 0x39, 0x00,
+	 0xd2, 0x04, 0xca, 0x04, 0x06, 0xb8, 0x00, 0xdb, 0xe8, 0x82, 0xd6, 0x1f,
+	 0x00, 0x00, 0x1f, 0x2d, 0x77, 0xe4, 0x4d, 0x02, 0x13, 0x50, 0x49, 0x00,
+	 0xd5, 0xcd, 0x98, 0x00, 0x07, 0x00, 0xac, 0x19, 0x05, 0x37, 0xfb, 0xe4,
+	 0x11, 0x00, 0x91, 0xe3, 0x82, 0xd6, 0x1f, 0x00, 0x00, 0x1f, 0x2d, 0x77,
+	 0xe4, 0x4d, 0x02, 0x13, 0x50, 0x49, 0x02, 0x01, 0x20, 0x83, 0x2f, 0x03,
+	 0x00, 0x00, 0x07, 0x00, 0x08, 0x81, 0x6b, 0x00, 0x03, 0x18, 0x10, 0x00,
+	 0x07, 0x00, 0x08, 0x81, 0x6b, 0x00, 0x03, 0x2b, 0x00, 0x04, 0x00, 0xe6,
+	 0xd5, 0x2f, 0xd6, 0x71, 0x93, 0x6c, 0xbf, 0xe3, 0x0f, 0x9d, 0xac, 0x1d,
+	 0x9a, 0xda, 0xb8, 0xc1, 0x1f, 0xa8, 0xae, 0x60, 0x1b, 0x8e, 0x45, 0xca,
+	 0x5d, 0x89, 0x20, 0x29, 0xff, 0xb8, 0xc3, 0x71, 0x59, 0x09, 0x95, 0x5c,
+	 0xf9, 0xf8, 0x55, 0x54, 0x84, 0xb3, 0x6f, 0x00, 0x32, 0x6c, 0xb8, 0x9a,
+	 0x17, 0x9f, 0xd2, 0x32, 0xf5, 0x56, 0xfb, 0x40, 0x2f, 0x63, 0xb0, 0x36,
+	 0x71, 0xcc, 0x0d, 0xbe, 0x02, 0x08, 0x8e, 0xbe, 0x18, 0x0a, 0x4c, 0xa1,
+	 0x57, 0x16, 0xcd, 0xaf, 0xb7, 0x52, 0x5c, 0x41, 0xe9, 0x3b, 0xca, 0xf4,
+	 0x57, 0xa8, 0x45, 0x7b, 0x45, 0x35, 0xd1, 0x1f, 0x31, 0x00, 0x16, 0xd5,
+	 0x66, 0xb4, 0xa9, 0x6f, 0x39, 0xa4, 0xdc, 0xf4, 0x7c, 0xc4, 0xd0, 0x80,
+	 0xe6, 0xc5, 0x2c, 0x58, 0x76, 0x5a, 0xcf, 0x93, 0x92, 0x50, 0x78, 0x07,
+	 0x4e, 0x62, 0x36, 0x1d, 0x9b, 0xfa, 0x69, 0x04, 0x00, 0xff, 0xff, 0xff,
+	 0xff, 0xff, 0xff, 0xff, 0xff, 0xc9, 0x0f, 0xda, 0xa2, 0x21, 0x68, 0xc2,
+	 0x34, 0xc4, 0xc6, 0x62, 0x8b, 0x80, 0xdc, 0x1c, 0xd1, 0x29, 0x02, 0x4e,
+	 0x08, 0x8a, 0x67, 0xcc, 0x74, 0x02, 0x0b, 0xbe, 0xa6, 0x3b, 0x13, 0x9b,
+	 0x22, 0x51, 0x4a, 0x08, 0x79, 0x8e, 0x34, 0x04, 0xdd, 0xef, 0x95, 0x19,
+	 0xb3, 0xcd, 0x3a, 0x43, 0x1b, 0x30, 0x2b, 0x0a, 0x6d, 0xf2, 0x5f, 0x14,
+	 0x37, 0x4f, 0xe1, 0x35, 0x6d, 0x6d, 0x51, 0xc2, 0x45, 0xe4, 0x85, 0xb5,
+	 0x76, 0x62, 0x5e, 0x7e, 0xc6, 0xf4, 0x4c, 0x42, 0xe9, 0xa6, 0x37, 0xed,
+	 0x6b, 0x0b, 0xff, 0x5c, 0xb6, 0xf4, 0x06, 0xb7, 0xed, 0xee, 0x38, 0x6b,
+	 0xfb, 0x5a, 0x89, 0x9f, 0xa5, 0xae, 0x9f, 0x24, 0x11, 0x7c, 0x4b, 0x1f,
+	 0xe6, 0x49, 0x28, 0x66, 0x51, 0xec, 0xe6, 0x53, 0x81, 0xff, 0xff, 0xff,
+	 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x08, 0x02, 0x10, 0x00, 0x07, 0x00,
+	 0x08, 0x81, 0x6b, 0x00, 0x03, 0x2d, 0x00, 0x08, 0x00, 0x7e, 0xd1, 0x0b,
+	 0x7c, 0xa4, 0xb3, 0x59, 0xf4, 0xba, 0xbc, 0x5f, 0x31, 0xb5, 0x0a, 0x6c,
+	 0x89, 0xc3, 0xf2, 0xd6, 0x8d, 0xca, 0x5f, 0x89, 0x4e, 0xd3, 0x5f, 0x20,
+	 0x22, 0xd2, 0xc1, 0xa8, 0xe8, 0xab, 0x36, 0x84, 0x23, 0x01, 0x3d, 0xc0,
+	 0x3d, 0xa1, 0x4c, 0x22, 0x05, 0xf7, 0x6e, 0x84, 0xf0, 0x33, 0xdc, 0x61,
+	 0x85, 0xfd, 0x3e, 0x6e, 0x58, 0xf0, 0xc0, 0xda, 0x0d, 0x31, 0x7d, 0x0f,
+	 0xcf, 0xdc, 0xf6, 0x9d, 0x7b, 0x09, 0xe7, 0xf2, 0xc7, 0x04, 0x0d, 0x37,
+	 0x3e, 0xec, 0xb2, 0x85, 0x77, 0x01, 0x81, 0x0f, 0x72, 0x0b, 0x8e, 0x1a,
+	 0x4d, 0x4f, 0x68, 0xe2, 0x70, 0xb9, 0x42, 0xea, 0x52, 0x87, 0x70, 0xe8,
+	 0xcc, 0x7f, 0x68, 0x93, 0xfd, 0x3e, 0x0c, 0x64, 0xe1, 0x9f, 0xdc, 0xfc,
+	 0x61, 0x3b, 0x30, 0x8c, 0x6b, 0x49, 0x93, 0xe1, 0xde, 0xb5, 0x7b, 0x92,
+	 0xe7, 0xea, 0xc5, 0x3f, 0x70, 0x17, 0x7a, 0x3b, 0x49, 0x8e, 0x58, 0xc8,
+	 0xc6, 0x65, 0x21, 0x24, 0x8d, 0x22, 0xb9, 0xbe, 0xf4, 0x2c, 0x67, 0xa0,
+	 0xf0, 0x68, 0x69, 0x34, 0x4e, 0x44, 0xe3, 0x85, 0xb7, 0xa4, 0x01, 0xac,
+	 0x5e, 0xdd, 0x5f, 0xe6, 0x67, 0xd8, 0x83, 0xe7, 0xae, 0x92, 0xc8, 0x95,
+	 0x66, 0x86, 0xf1, 0xbc, 0x39, 0x51, 0xe7, 0x69, 0xa0, 0xe4, 0xbe, 0xb4,
+	 0xfd, 0x31, 0xb8, 0x3c, 0xd3, 0x63, 0x3d, 0xa4, 0xff, 0x42, 0x7f, 0xf8,
+	 0x08, 0x77, 0x9b, 0x71, 0xd3, 0xb2, 0x92, 0xc5, 0x55, 0x04, 0xb2, 0xd6,
+	 0x9e, 0x37, 0xd8, 0xb2, 0xda, 0xa4, 0xe2, 0xc4, 0x52, 0xd8, 0x23, 0xa0,
+	 0xb5, 0xa2, 0x93, 0x0e, 0x74, 0x3e, 0xfd, 0x2d, 0x27, 0x15, 0xab, 0xcb,
+	 0x74, 0x2e, 0x3f, 0x61, 0x1c, 0x67, 0x23, 0x59, 0xae, 0xb1, 0x7d, 0xce,
+	 0x1c, 0x55, 0x72, 0x61, 0x1b, 0x55, 0xaa, 0x21, 0x01, 0x15, 0x39, 0xf8,
+	 0xc9, 0x08, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc9,
+	 0x0f, 0xda, 0xa2, 0x21, 0x68, 0xc2, 0x34, 0xc4, 0xc6, 0x62, 0x8b, 0x80,
+	 0xdc, 0x1c, 0xd1, 0x29, 0x02, 0x4e, 0x08, 0x8a, 0x67, 0xcc, 0x74, 0x02,
+	 0x0b, 0xbe, 0xa6, 0x3b, 0x13, 0x9b, 0x22, 0x51, 0x4a, 0x08, 0x79, 0x8e,
+	 0x34, 0x04, 0xdd, 0xef, 0x95, 0x19, 0xb3, 0xcd, 0x3a, 0x43, 0x1b, 0x30,
+	 0x2b, 0x0a, 0x6d, 0xf2, 0x5f, 0x14, 0x37, 0x4f, 0xe1, 0x35, 0x6d, 0x6d,
+	 0x51, 0xc2, 0x45, 0xe4, 0x85, 0xb5, 0x76, 0x62, 0x5e, 0x7e, 0xc6, 0xf4,
+	 0x4c, 0x42, 0xe9, 0xa6, 0x37, 0xed, 0x6b, 0x0b, 0xff, 0x5c, 0xb6, 0xf4,
+	 0x06, 0xb7, 0xed, 0xee, 0x38, 0x6b, 0xfb, 0x5a, 0x89, 0x9f, 0xa5, 0xae,
+	 0x9f, 0x24, 0x11, 0x7c, 0x4b, 0x1f, 0xe6, 0x49, 0x28, 0x66, 0x51, 0xec,
+	 0xe4, 0x5b, 0x3d, 0xc2, 0x00, 0x7c, 0xb8, 0xa1, 0x63, 0xbf, 0x05, 0x98,
+	 0xda, 0x48, 0x36, 0x1c, 0x55, 0xd3, 0x9a, 0x69, 0x16, 0x3f, 0xa8, 0xfd,
+	 0x24, 0xcf, 0x5f, 0x83, 0x65, 0x5d, 0x23, 0xdc, 0xa3, 0xad, 0x96, 0x1c,
+	 0x62, 0xf3, 0x56, 0x20, 0x85, 0x52, 0xbb, 0x9e, 0xd5, 0x29, 0x07, 0x70,
+	 0x96, 0x96, 0x6d, 0x67, 0x0c, 0x35, 0x4e, 0x4a, 0xbc, 0x98, 0x04, 0xf1,
+	 0x74, 0x6c, 0x08, 0xca, 0x18, 0x21, 0x7c, 0x32, 0x90, 0x5e, 0x46, 0x2e,
+	 0x36, 0xce, 0x3b, 0xe3, 0x9e, 0x77, 0x2c, 0x18, 0x0e, 0x86, 0x03, 0x9b,
+	 0x27, 0x83, 0xa2, 0xec, 0x07, 0xa2, 0x8f, 0xb5, 0xc5, 0x5d, 0xf0, 0x6f,
+	 0x4c, 0x52, 0xc9, 0xde, 0x2b, 0xcb, 0xf6, 0x95, 0x58, 0x17, 0x18, 0x39,
+	 0x95, 0x49, 0x7c, 0xea, 0x95, 0x6a, 0xe5, 0x15, 0xd2, 0x26, 0x18, 0x98,
+	 0xfa, 0x05, 0x10, 0x15, 0x72, 0x8e, 0x5a, 0x8a, 0xac, 0xaa, 0x68, 0xff,
+	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x08, 0x02, 0x01, 0x00,
+	 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x40
+    };
+    size_t data_len = sizeof(sample_data);
+    printf("data len : %d\n", data_len);
+    parse_h225_setup(sample_data, data_len);
+    return 0;
+}
+
Index: /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/test/sample_hex_dump.txt
===================================================================
--- /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/test/sample_hex_dump.txt	(revision 0)
+++ /branches/rel_apv_10_7_2_17_bhel_h323_nat/usr/click/lib/libasn1c/test/sample_hex_dump.txt	(working copy)
@@ -0,0 +1,61 @@
+0000   a8 06 00 08 91 4a 00 05 01 40 0d 00 47 00 37 00
+0010   35 00 30 00 30 00 2d 00 36 00 37 00 33 00 42 00
+0020   30 00 30 00 46 00 32 22 c0 b5 00 23 31 0b 50 6f
+0030   6c 79 63 6f 6d 47 37 35 30 30 0b 34 2e 31 2e 33
+0040   2d 33 39 34 30 30 39 00 d2 04 ca 04 06 b8 00 52
+0050   9d 13 26 23 00 00 1f 14 8d 42 53 90 89 8e af 00
+0060   d5 cd 98 00 07 00 ac 19 05 37 e2 fa 11 00 a5 98
+0070   13 26 23 00 00 1f 14 8d 42 53 90 89 8e af 02 01
+0080   20 83 2f 03 00 00 07 00 08 81 6b 00 03 18 10 00
+0090   07 00 08 81 6b 00 03 2b 00 04 00 c3 92 26 8f 11
+00a0   fd 2b 2b 61 01 71 a2 3f 43 70 04 ab 4f e3 ca 2b
+00b0   0a 1f 23 0f 5c b9 2e 6e a9 a1 0a c3 9d 4f 1a bb
+00c0   92 12 27 a3 51 9c 6f 28 a8 bb 30 a9 6a 57 9d 50
+00d0   72 97 f6 3f a1 d9 61 42 e8 d3 59 ce ea 6f 95 bc
+00e0   c0 04 f3 96 cc 74 be d7 5b ab 9e 33 58 c4 f8 7a
+00f0   0c e2 3e 2c 99 1a 0d 34 c8 b8 c4 34 a2 df 55 e5
+0100   cc 3b dd 37 fc 9b fd 14 a6 a4 88 7b 16 04 43 d5
+0110   bc c6 e6 92 64 7d 72 8b 7c 03 48 04 00 ff ff ff
+0120   ff ff ff ff ff c9 0f da a2 21 68 c2 34 c4 c6 62
+0130   8b 80 dc 1c d1 29 02 4e 08 8a 67 cc 74 02 0b be
+0140   a6 3b 13 9b 22 51 4a 08 79 8e 34 04 dd ef 95 19
+0150   b3 cd 3a 43 1b 30 2b 0a 6d f2 5f 14 37 4f e1 35
+0160   6d 6d 51 c2 45 e4 85 b5 76 62 5e 7e c6 f4 4c 42
+0170   e9 a6 37 ed 6b 0b ff 5c b6 f4 06 b7 ed ee 38 6b
+0180   fb 5a 89 9f a5 ae 9f 24 11 7c 4b 1f e6 49 28 66
+0190   51 ec e6 53 81 ff ff ff ff ff ff ff ff 00 08 02
+01a0   10 00 07 00 08 81 6b 00 03 2d 00 08 00 bd 50 80
+01b0   ce af c2 b1 47 1b 4f 45 fe 26 39 2c 07 ed f6 d6
+01c0   25 8b c4 6d 4d 2b fb 0e 8b 16 5c 1a b4 8d 51 7d
+01d0   5d ef 42 08 f9 cc 22 7b ed f4 50 4d fb f1 dc b7
+01e0   7a bd f3 fa 21 58 f4 ad a2 58 2b 8e 5d b9 4e 7b
+01f0   7c a0 06 67 fb 21 2b 44 39 d0 c0 c4 ed eb 52 32
+0200   c6 f1 be a9 b4 ce 64 39 a7 6d f5 d1 30 9c 18 ba
+0210   a9 e8 5f b4 43 a8 2a 94 15 d1 6d 3d 49 8b ab a8
+0220   b7 f1 14 dc 5c 08 a1 22 df ed 09 f3 03 cd dc 4b
+0230   4e be ee 0c ea ed 9c cf 8c b1 00 32 3e 4b ec 79
+0240   e7 8d 2a eb e2 8c 0d 2b d3 79 c3 8c 27 93 85 e9
+0250   09 63 bd 58 88 e5 1b 5a 4c 45 59 cb ea 14 37 60
+0260   fa 4b ce 43 14 6f b6 f0 c3 10 e5 34 4b 61 f3 48
+0270   fd e8 29 4c 0a 6b 2d c3 70 20 3c 68 5d 1f 1e b6
+0280   ce 7a 26 22 96 49 3c 5c 10 dc 99 8e dc 7f 1b 96
+0290   0b 59 e0 4d a8 38 82 25 a9 87 f1 c2 34 f7 00 6d
+02a0   84 59 07 79 f0 da af 05 9c 32 76 a3 22 08 00 ff
+02b0   ff ff ff ff ff ff ff c9 0f da a2 21 68 c2 34 c4
+02c0   c6 62 8b 80 dc 1c d1 29 02 4e 08 8a 67 cc 74 02
+02d0   0b be a6 3b 13 9b 22 51 4a 08 79 8e 34 04 dd ef
+02e0   95 19 b3 cd 3a 43 1b 30 2b 0a 6d f2 5f 14 37 4f
+02f0   e1 35 6d 6d 51 c2 45 e4 85 b5 76 62 5e 7e c6 f4
+0300   4c 42 e9 a6 37 ed 6b 0b ff 5c b6 f4 06 b7 ed ee
+0310   38 6b fb 5a 89 9f a5 ae 9f 24 11 7c 4b 1f e6 49
+0320   28 66 51 ec e4 5b 3d c2 00 7c b8 a1 63 bf 05 98
+0330   da 48 36 1c 55 d3 9a 69 16 3f a8 fd 24 cf 5f 83
+0340   65 5d 23 dc a3 ad 96 1c 62 f3 56 20 85 52 bb 9e
+0350   d5 29 07 70 96 96 6d 67 0c 35 4e 4a bc 98 04 f1
+0360   74 6c 08 ca 18 21 7c 32 90 5e 46 2e 36 ce 3b e3
+0370   9e 77 2c 18 0e 86 03 9b 27 83 a2 ec 07 a2 8f b5
+0380   c5 5d f0 6f 4c 52 c9 de 2b cb f6 95 58 17 18 39
+0390   95 49 7c ea 95 6a e5 15 d2 26 18 98 fa 05 10 15
+03a0   72 8e 5a 8a ac aa 68 ff ff ff ff ff ff ff ff 00
+03b0   08 02 01 00 01 00 01 00 01 00 01 00 01 40
+
