⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asn1.h

📁 snmp的源代码,已经在我的ubuntu下编译通过
💻 H
📖 第 1 页 / 共 2 页
字号:
    u_char         *asn_build_signed_int64(u_char *, size_t *, u_char,                                           const struct counter64 *, size_t);    u_char         *asn_build_float(u_char *, size_t *, u_char, const float *,                                    size_t);    u_char         *asn_parse_float(u_char *, size_t *, u_char *, float *,                                    size_t);    u_char         *asn_build_double(u_char *, size_t *, u_char, const double *,                                     size_t);    u_char         *asn_parse_double(u_char *, size_t *, u_char *,                                     double *, size_t);#ifdef USE_REVERSE_ASNENCODING    /*     * Re-allocator function for below.       */    int             asn_realloc(u_char **, size_t *);    /*     * Re-allocating reverse ASN.1 encoder functions.  Synopsis:     *      * u_char *buf = (u_char*)malloc(100);     * u_char type = (ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER);     * size_t buf_len = 100, offset = 0;     * long data = 12345;     * int allow_realloc = 1;     *      * if (asn_realloc_rbuild_int(&buf, &buf_len, &offset, allow_realloc,     * type, &data, sizeof(long)) == 0) {     * error;     * }     *      * NOTE WELL: after calling one of these functions with allow_realloc     * non-zero, buf might have moved, buf_len might have grown and     * offset will have increased by the size of the encoded data.     * You should **NEVER** do something like this:     *      * u_char *buf = (u_char *)malloc(100), *ptr;     * u_char type = (ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER);     * size_t buf_len = 100, offset = 0;     * long data1 = 1234, data2 = 5678;     * int rc = 0, allow_realloc = 1;     *      * rc  = asn_realloc_rbuild_int(&buf, &buf_len, &offset, allow_realloc,     * type, &data1, sizeof(long));     * ptr = buf[buf_len - offset];   / * points at encoding of data1 * /     * if (rc == 0) {     * error;     * }     * rc  = asn_realloc_rbuild_int(&buf, &buf_len, &offset, allow_realloc,     * type, &data2, sizeof(long));     * make use of ptr here;     *      *      * ptr is **INVALID** at this point.  In general, you should store the     * offset value and compute pointers when you need them:     *      *      *      * u_char *buf = (u_char *)malloc(100), *ptr;     * u_char type = (ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER);     * size_t buf_len = 100, offset = 0, ptr_offset;     * long data1 = 1234, data2 = 5678;     * int rc = 0, allow_realloc = 1;     *      * rc  = asn_realloc_rbuild_int(&buf, &buf_len, &offset, allow_realloc,     * type, &data1, sizeof(long));     * ptr_offset = offset;     * if (rc == 0) {     * error;     * }     * rc  = asn_realloc_rbuild_int(&buf, &buf_len, &offset, allow_realloc,     * type, &data2, sizeof(long));     * ptr = buf + buf_len - ptr_offset     * make use of ptr here;     *      *      *      * Here, you can see that ptr will be a valid pointer even if the block of     * memory has been moved, as it may well have been.  Plenty of examples of     * usage all over asn1.c, snmp_api.c, snmpusm.c.     *      * The other thing you should **NEVER** do is to pass a pointer to a buffer     * on the stack as the first argument when allow_realloc is non-zero, unless     * you really know what you are doing and your machine/compiler allows you to     * free non-heap memory.  There are rumours that such things exist, but many     * consider them no more than the wild tales of a fool.     *      * Of course, you can pass allow_realloc as zero, to indicate that you do not     * wish the packet buffer to be reallocated for some reason; perhaps because     * it is on the stack.  This may be useful to emulate the functionality of     * the old API:     *      * u_char my_static_buffer[100], *cp = NULL;     * size_t my_static_buffer_len = 100;     * float my_pi = (float)22/(float)7;     *      * cp = asn_rbuild_float(my_static_buffer, &my_static_buffer_len,     * ASN_OPAQUE_FLOAT, &my_pi, sizeof(float));     * if (cp == NULL) {     * error;     * }     *      *      * IS EQUIVALENT TO:     *      *      * u_char my_static_buffer[100];     * size_t my_static_buffer_len = 100, my_offset = 0;     * float my_pi = (float)22/(float)7;     * int rc = 0;     *      * rc = asn_realloc_rbuild_float(&my_static_buffer, &my_static_buffer_len,     * &my_offset, 0,     * ASN_OPAQUE_FLOAT, &my_pi, sizeof(float));     * if (rc == 0) {     * error;     * }     *      *      */    int             asn_realloc_rbuild_int(u_char ** pkt, size_t * pkt_len,                                           size_t * offset,                                           int allow_realloc, u_char type,                                           const long *data, size_t data_size);    int             asn_realloc_rbuild_string(u_char ** pkt,                                              size_t * pkt_len,                                              size_t * offset,                                              int allow_realloc,                                              u_char type,                                              const u_char * data,                                              size_t data_size);    int             asn_realloc_rbuild_unsigned_int(u_char ** pkt,                                                    size_t * pkt_len,                                                    size_t * offset,                                                    int allow_realloc,                                                    u_char type,                                                    const u_long * data,                                                    size_t data_size);    int             asn_realloc_rbuild_header(u_char ** pkt,                                              size_t * pkt_len,                                              size_t * offset,                                              int allow_realloc,                                              u_char type,                                              size_t data_size);    int             asn_realloc_rbuild_sequence(u_char ** pkt,                                                size_t * pkt_len,                                                size_t * offset,                                                int allow_realloc,                                                u_char type,                                                size_t data_size);    int             asn_realloc_rbuild_length(u_char ** pkt,                                              size_t * pkt_len,                                              size_t * offset,                                              int allow_realloc,                                              size_t data_size);    int             asn_realloc_rbuild_objid(u_char ** pkt,                                             size_t * pkt_len,                                             size_t * offset,                                             int allow_realloc,                                             u_char type, const oid *,                                             size_t);    int             asn_realloc_rbuild_null(u_char ** pkt,                                            size_t * pkt_len,                                            size_t * offset,                                            int allow_realloc,                                            u_char type);    int             asn_realloc_rbuild_bitstring(u_char ** pkt,                                                 size_t * pkt_len,                                                 size_t * offset,                                                 int allow_realloc,                                                 u_char type,                                                 const u_char * data,                                                 size_t data_size);    int             asn_realloc_rbuild_unsigned_int64(u_char ** pkt,                                                      size_t * pkt_len,                                                      size_t * offset,                                                      int allow_realloc,                                                      u_char type,                                                      struct counter64                                                      const *data, size_t);    int             asn_realloc_rbuild_signed_int64(u_char ** pkt,                                                    size_t * pkt_len,                                                    size_t * offset,                                                    int allow_realloc,                                                    u_char type,                                                    const struct counter64 *data,                                                    size_t);    int             asn_realloc_rbuild_float(u_char ** pkt,                                             size_t * pkt_len,                                             size_t * offset,                                             int allow_realloc,                                             u_char type, const float *data,                                             size_t data_size);    int             asn_realloc_rbuild_double(u_char ** pkt,                                              size_t * pkt_len,                                              size_t * offset,                                              int allow_realloc,                                              u_char type, const double *data,                                              size_t data_size);#endif#ifdef __cplusplus}#endif#endif                          /* ASN1_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -