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_COMP_LIST_H
00027 #define ROHC_COMP_LIST_H
00028
00029 #include "ip.h"
00030 #include "rohc_list.h"
00031 #include "rohc_traces_internal.h"
00032
00033
00034 #define rc_list_debug(comp_list, format, ...) \
00035 rohc_debug(comp_list, ROHC_TRACE_COMP, (comp_list)->profile_id, \
00036 format, ##__VA_ARGS__)
00037
00038
00039
00040
00041
00042 struct list_comp
00043 {
00044
00045 struct rohc_list_item trans_table[ROHC_LIST_MAX_ITEM];
00046
00047
00048 struct rohc_list lists[ROHC_LIST_GEN_ID_MAX + 2];
00049
00050
00051 unsigned int ref_id;
00052
00053 unsigned int cur_id;
00054
00055
00056
00057 size_t list_trans_nr;
00058
00059
00060
00061
00062 int (*get_index_table)(const uint8_t type, const size_t occur_nr)
00063 __attribute__((warn_unused_result, const));
00064
00065
00066 unsigned short (*get_size)(const uint8_t *ext);
00067
00068
00069 rohc_list_item_cmp cmp_item;
00070
00071
00072
00073
00074 rohc_trace_callback2_t trace_callback;
00075
00076 void *trace_callback_priv;
00077
00078 int profile_id;
00079 };
00080
00081
00082 bool detect_ipv6_ext_changes(struct list_comp *const comp,
00083 const struct ip_packet *const ip,
00084 bool *const list_struct_changed,
00085 bool *const list_content_changed)
00086 __attribute__((warn_unused_result, nonnull(1, 2, 3, 4)));
00087
00088 int rohc_list_encode(struct list_comp *const comp,
00089 uint8_t *const dest,
00090 int counter)
00091 __attribute__((warn_unused_result, nonnull(1, 2)));
00092
00093 void rohc_list_update_context(struct list_comp *const comp)
00094 __attribute__((nonnull(1)));
00095
00096 #endif
00097