aboutsummaryrefslogtreecommitdiffstats
path: root/skeletons/ANY.c
diff options
context:
space:
mode:
Diffstat (limited to 'skeletons/ANY.c')
-rw-r--r--skeletons/ANY.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/skeletons/ANY.c b/skeletons/ANY.c
index 389452cd..a1c77118 100644
--- a/skeletons/ANY.c
+++ b/skeletons/ANY.c
@@ -2,17 +2,20 @@
* Copyright (c) 2004 Lev Walkin <vlm@lionet.info>. All rights reserved.
* Redistribution and modifications are permitted subject to BSD license.
*/
+#include <asn_internal.h>
#include <ANY.h>
#include <assert.h>
#include <errno.h>
asn1_TYPE_descriptor_t asn1_DEF_ANY = {
"ANY",
+ OCTET_STRING_free,
+ OCTET_STRING_print,
asn_generic_no_constraint,
OCTET_STRING_decode_ber,
OCTET_STRING_encode_der,
- OCTET_STRING_print,
- OCTET_STRING_free,
+ 0, /* Not implemented yet */
+ ANY_encode_xer,
0, /* Use generic outmost tag fetcher */
0, 0, 0, 0,
-1, /* Both ways are fine (primitive and constructed) */
@@ -21,6 +24,23 @@ asn1_TYPE_descriptor_t asn1_DEF_ANY = {
};
+asn_enc_rval_t
+ANY_encode_xer(asn1_TYPE_descriptor_t *td, void *sptr,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+
+ (void)ilevel;
+ (void)flags;
+ (void)cb;
+ (void)app_key;
+
+ /*
+ * XER-encoding of ANY type is not supported.
+ */
+
+ _ASN_ENCODE_FAILED;
+}
+
struct _callback_arg {
uint8_t *buffer;
size_t offset;
@@ -32,7 +52,7 @@ static int ANY__consume_bytes(const void *buffer, size_t size, void *key);
int
ANY_fromType(ANY_t *st, asn1_TYPE_descriptor_t *td, void *sptr) {
struct _callback_arg arg;
- der_enc_rval_t erval;
+ asn_enc_rval_t erval;
if(!st || !td) {
errno = EINVAL;
@@ -53,7 +73,7 @@ ANY_fromType(ANY_t *st, asn1_TYPE_descriptor_t *td, void *sptr) {
if(arg.buffer) FREEMEM(arg.buffer);
return -1;
}
- assert(erval.encoded == arg.offset);
+ assert((size_t)erval.encoded == arg.offset);
if(st->buf) FREEMEM(st->buf);
st->buf = arg.buffer;