00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef ROHC_DECOMP_LIST_H
00027 #define ROHC_DECOMP_LIST_H
00028
00029 #include "rohc_list.h"
00030 #include "rohc_traces_internal.h"
00031
00032
00033
00034 #define rd_list_warn(decomp_list, format, ...) \
00035 rohc_warning(decomp_list, ROHC_TRACE_DECOMP, (decomp_list)->profile_id, \
00036 format, ##__VA_ARGS__)
00037
00038
00039 #define rd_list_debug(decomp_list, format, ...) \
00040 rohc_debug(decomp_list, ROHC_TRACE_DECOMP, (decomp_list)->profile_id, \
00041 format, ##__VA_ARGS__)
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 struct list_decomp
00052 {
00053
00054 struct rohc_list_item trans_table[ROHC_LIST_MAX_ITEM];
00055
00056
00057 struct rohc_list lists[ROHC_LIST_GEN_ID_MAX + 1];
00058
00059
00060 struct rohc_list pkt_list;
00061
00062
00063
00064
00065
00066 bool (*check_item)(const struct list_decomp *const decomp,
00067 const size_t index_table);
00068
00069
00070 int (*get_item_size)(const uint8_t *data, const size_t data_len);
00071
00072
00073 rohc_list_item_cmp cmp_item;
00074
00075
00076 bool (*create_item)(const uint8_t *const data,
00077 const size_t length,
00078 const size_t index_table,
00079 struct list_decomp *const decomp);
00080
00081
00082 size_t (*build_uncomp_item)(const struct list_decomp *const decomp,
00083 const uint8_t ip_nh_type,
00084 uint8_t *const dest);
00085
00086
00087
00088
00089
00090 rohc_trace_callback2_t trace_callback;
00091
00092 void *trace_callback_priv;
00093
00094 int profile_id;
00095 };
00096
00097
00098
00099
00100
00101
00102
00103 int rohc_list_decode_maybe(struct list_decomp *const decomp,
00104 const uint8_t *const packet,
00105 const size_t packet_len)
00106 __attribute__((warn_unused_result, nonnull(1, 2)));
00107
00108 bool rohc_decomp_list_create_item(struct list_decomp *const decomp,
00109 const unsigned int xi_index,
00110 const unsigned int xi_index_value,
00111 const uint8_t *const rohc_packet,
00112 const size_t rohc_max_len,
00113 size_t *const item_length)
00114 __attribute__((warn_unused_result, nonnull(1, 4, 6)));
00115
00116 #endif
00117