Updated INFO.yaml file
[ric-app/kpimon.git] / asn1c_defs / all-defs / OBJECT_IDENTIFIER.h
1 /*\r
2  * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.\r
3  * Redistribution and modifications are permitted subject to BSD license.\r
4  */\r
5 #ifndef _OBJECT_IDENTIFIER_H_\r
6 #define _OBJECT_IDENTIFIER_H_\r
7 \r
8 #include <asn_application.h>\r
9 #include <asn_codecs_prim.h>\r
10 #include <OCTET_STRING.h>\r
11 \r
12 #ifdef __cplusplus\r
13 extern "C" {\r
14 #endif\r
15 \r
16 typedef uint32_t asn_oid_arc_t;\r
17 #define ASN_OID_ARC_MAX (~((asn_oid_arc_t)0))\r
18 \r
19 typedef ASN__PRIMITIVE_TYPE_t OBJECT_IDENTIFIER_t;\r
20 \r
21 extern asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER;\r
22 extern asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER;\r
23 \r
24 asn_struct_print_f OBJECT_IDENTIFIER_print;\r
25 asn_constr_check_f OBJECT_IDENTIFIER_constraint;\r
26 der_type_encoder_f OBJECT_IDENTIFIER_encode_der;\r
27 xer_type_decoder_f OBJECT_IDENTIFIER_decode_xer;\r
28 xer_type_encoder_f OBJECT_IDENTIFIER_encode_xer;\r
29 asn_random_fill_f  OBJECT_IDENTIFIER_random_fill;\r
30 \r
31 #define OBJECT_IDENTIFIER_free           ASN__PRIMITIVE_TYPE_free\r
32 #define OBJECT_IDENTIFIER_compare        OCTET_STRING_compare\r
33 #define OBJECT_IDENTIFIER_decode_ber     ber_decode_primitive\r
34 #define OBJECT_IDENTIFIER_encode_der     der_encode_primitive\r
35 #define OBJECT_IDENTIFIER_decode_oer     oer_decode_primitive\r
36 #define OBJECT_IDENTIFIER_encode_oer     oer_encode_primitive\r
37 #define OBJECT_IDENTIFIER_decode_uper    OCTET_STRING_decode_uper\r
38 #define OBJECT_IDENTIFIER_encode_uper    OCTET_STRING_encode_uper\r
39 #define OBJECT_IDENTIFIER_decode_aper    OCTET_STRING_decode_aper\r
40 #define OBJECT_IDENTIFIER_encode_aper    OCTET_STRING_encode_aper\r
41 \r
42 /**********************************\r
43  * Some handy conversion routines *\r
44  **********************************/\r
45 \r
46 /*\r
47  * This function fills an (arcs) array with OBJECT IDENTIFIER arcs\r
48  * up to specified (arc_slots) elements.\r
49  *\r
50  * EXAMPLE:\r
51  *      void print_arcs(OBJECT_IDENTIFIER_t *oid) {\r
52  *              asn_oid_arc_t fixed_arcs[10];   // Try with fixed space first\r
53  *              asn_oid_arc_t *arcs = fixed_arcs;\r
54  *              size_t arc_slots = sizeof(fixed_arcs)/sizeof(fixed_arcs[0]); // 10\r
55  *              ssize_t count;  // Real number of arcs.\r
56  *              int i;\r
57  *\r
58  *              count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots);\r
59  *              // If necessary, reallocate arcs array and try again.\r
60  *              if(count > arc_slots) {\r
61  *                      arc_slots = count;\r
62  *                      arcs = malloc(sizeof(asn_oid_arc_t) * arc_slots);\r
63  *                      if(!arcs) return;\r
64  *                      count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots);\r
65  *                      assert(count == arc_slots);\r
66  *              }\r
67  *\r
68  *              // Print the contents of the arcs array.\r
69  *              for(i = 0; i < count; i++)\r
70  *                      printf("%"PRIu32"\n", arcs[i]);\r
71  *\r
72  *              // Avoid memory leak.\r
73  *              if(arcs != fixed_arcs) free(arcs);\r
74  *      }\r
75  *\r
76  * RETURN VALUES:\r
77  * -1/EINVAL:   Invalid arguments (oid is missing)\r
78  * -1/ERANGE:   One or more arcs have value out of array cell type range.\r
79  * >=0:         Number of arcs contained in the OBJECT IDENTIFIER\r
80  *\r
81  * WARNING: The function always returns the actual number of arcs,\r
82  * even if there is no sufficient (arc_slots) provided.\r
83  */\r
84 ssize_t OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *oid,\r
85                                    asn_oid_arc_t *arcs, size_t arc_slots);\r
86 \r
87 /*\r
88  * This functions initializes the OBJECT IDENTIFIER object with\r
89  * the given set of arcs.\r
90  * The minimum of two arcs must be present; some restrictions apply.\r
91  * RETURN VALUES:\r
92  * -1/EINVAL:   Invalid arguments\r
93  * -1/ERANGE:   The first two arcs do not conform to ASN.1 restrictions.\r
94  * -1/ENOMEM:   Memory allocation failed\r
95  * 0:           The object was initialized with new arcs.\r
96  */\r
97 int OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid,\r
98                                const asn_oid_arc_t *arcs, size_t arcs_count);\r
99 \r
100 \r
101 /*\r
102  * Parse the OBJECT IDENTIFIER textual representation ("1.3.6.1.4.1.9363").\r
103  * No arc can exceed the (0..ASN_OID_ARC_MAX, which is the same as UINT32_MAX).\r
104  * This function is not specific to OBJECT IDENTIFIER, it may be used to parse\r
105  * the RELATIVE-OID data, or any other data consisting of dot-separated\r
106  * series of numeric values.\r
107  *\r
108  * If (oid_txt_length == -1), the strlen() will be invoked to determine the\r
109  * size of the (oid_text) string.\r
110  * \r
111  * After return, the optional (opt_oid_text_end) is set to the character after\r
112  * the last parsed one. (opt_oid_text_end) is never less than (oid_text).\r
113  * \r
114  * RETURN VALUES:\r
115  *   -1:        Parse error.\r
116  * >= 0:        Number of arcs contained in the OBJECT IDENTIFIER.\r
117  * \r
118  * WARNING: The function always returns the real number of arcs,\r
119  * even if there is no sufficient (arc_slots) provided.\r
120  * This is useful for (arc_slots) value estimation.\r
121  */\r
122 ssize_t OBJECT_IDENTIFIER_parse_arcs(const char *oid_text,\r
123                                      ssize_t oid_txt_length,\r
124                                      asn_oid_arc_t *arcs, size_t arcs_count,\r
125                                      const char **opt_oid_text_end);\r
126 \r
127 /*\r
128  * Internal functions.\r
129  * Used by RELATIVE-OID implementation in particular.\r
130  */\r
131 \r
132 /*\r
133  * Retrieve a single arc of size from the (arcbuf) buffer.\r
134  * RETURN VALUES:\r
135  *  -1: Failed to retrieve the value from the (arcbuf).\r
136  *  >0: Number of bytes consumed from the (arcbuf), <= (arcbuf_len).\r
137  */\r
138 ssize_t OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf,\r
139                                          size_t arcbuf_len,\r
140                                          asn_oid_arc_t *ret_value);\r
141 \r
142 /*\r
143  * Write the unterminated arc value into the (arcbuf) which has the size at\r
144  * least (arcbuf_len).\r
145  * RETURN VALUES:\r
146  *   -1: (arcbuf_len) size is not sufficient to write the value.\r
147  *  <n>: Number of bytes appended to the arcbuf (<= arcbuf_len).\r
148  */\r
149 ssize_t OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len,\r
150                                          asn_oid_arc_t arc_value);\r
151 \r
152 #ifdef __cplusplus\r
153 }\r
154 #endif\r
155 \r
156 #endif  /* _OBJECT_IDENTIFIER_H_ */\r