summaryrefslogtreecommitdiff
path: root/plugins/wimax
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2016-12-15 13:01:27 -0500
committerMichael Mann <mmann78@netscape.net>2016-12-16 03:04:11 +0000
commit232cb9a2dd87ea9cc9c88d4c32bfb7b452705130 (patch)
treeff1b2039727322c1f8e332f2040f0ba5d83c4f43 /plugins/wimax
parent8efb7fece1ffefd26dacd79f5ec8722c4e01e827 (diff)
downloadwireshark-232cb9a2dd87ea9cc9c88d4c32bfb7b452705130.tar.gz
Remove proto_item_append_text calls in favor of BASE_UNIT_STRING.
Many proto_item_append_text calls were just adding a unit string to a field. There's a better way to do that now. Change-Id: Id18d5ac1ea4d8ecdc4cbe7ebaec07fbd2eab6e78 Reviewed-on: https://code.wireshark.org/review/19289 Petri-Dish: Michael Mann <mmann78@netscape.net> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'plugins/wimax')
-rw-r--r--plugins/wimax/msg_dcd.c73
-rw-r--r--plugins/wimax/msg_rng_rsp.c10
-rw-r--r--plugins/wimax/msg_ucd.c79
-rw-r--r--plugins/wimax/wimax_utils.c57
-rw-r--r--plugins/wimax/wimax_utils.h12
5 files changed, 107 insertions, 124 deletions
diff --git a/plugins/wimax/msg_dcd.c b/plugins/wimax/msg_dcd.c
index 75742f7032..e0e6fcb6c9 100644
--- a/plugins/wimax/msg_dcd.c
+++ b/plugins/wimax/msg_dcd.c
@@ -35,6 +35,7 @@
#include <epan/packet.h>
#include "wimax_tlv.h"
#include "wimax_mac.h"
+#include "wimax_utils.h"
/* Delete the following variable as soon as possible */
extern gboolean include_cor2_changes;
@@ -419,8 +420,7 @@ static int dissect_mac_mgmt_msg_dcd_decoder(tvbuff_t *tvb, packet_info *pinfo, p
{
case DCD_BURST_FREQUENCY:
{
- tlv_item = add_tlv_subtree(&tlv_info, tlv_tree, hf_dcd_burst_freq, tvb, (offset+tlv_offset), ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " kHz");
+ add_tlv_subtree(&tlv_info, tlv_tree, hf_dcd_burst_freq, tvb, (offset+tlv_offset), ENC_BIG_ENDIAN);
break;
}
case DCD_BURST_FEC_CODE_TYPE:
@@ -453,8 +453,7 @@ static int dissect_mac_mgmt_msg_dcd_decoder(tvbuff_t *tvb, packet_info *pinfo, p
}
case DCD_BS_EIRP:
{
- tlv_item = add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_bs_eirp, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " dBm");
+ add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_bs_eirp, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case DCD_FRAME_DURATION:
@@ -479,28 +478,24 @@ static int dissect_mac_mgmt_msg_dcd_decoder(tvbuff_t *tvb, packet_info *pinfo, p
}
case DCD_TTG:
{
- tlv_item = add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_ttg, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " PS");
+ add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_ttg, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case DCD_RTG:
{
- tlv_item = add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_rtg, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " PS");
+ add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_rtg, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
#ifdef WIMAX_16D_2004
case DCD_RSS:
{
- tlv_item = add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_rss, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " dBm");
+ add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_rss, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
#else
case DCD_EIRXP:
{
- tlv_item = add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_eirxp, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " dBm");
+ add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_eirxp, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
#endif
@@ -511,8 +506,7 @@ static int dissect_mac_mgmt_msg_dcd_decoder(tvbuff_t *tvb, packet_info *pinfo, p
}
case DCD_FREQUENCY:
{
- tlv_item = add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_frequency, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " kHz");
+ add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_frequency, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case DCD_BS_ID:
@@ -539,8 +533,7 @@ static int dissect_mac_mgmt_msg_dcd_decoder(tvbuff_t *tvb, packet_info *pinfo, p
#endif
case DCD_H_ARQ_ACK_DELAY:
{
- tlv_item = add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_h_arq_ack_delay, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " frame offset");
+ add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_h_arq_ack_delay, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case DCD_MAC_VERSION:
@@ -601,24 +594,20 @@ static int dissect_mac_mgmt_msg_dcd_decoder(tvbuff_t *tvb, packet_info *pinfo, p
}
case DCD_TLV_T_31_H_ADD_THRESHOLD:
{
- tlv_item = add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_tlv_t_31_h_add_threshold, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " dB");
+ add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_tlv_t_31_h_add_threshold, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case DCD_TLV_T_32_H_DELETE_THRESHOLD:
{
- tlv_item = add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_tlv_t_32_h_delete_threshold, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " dB");
+ add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_tlv_t_32_h_delete_threshold, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case DCD_TLV_T_33_ASR:
{
tlv_item = add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_tlv_t_33_asr, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
tlv_tree = proto_item_add_subtree(tlv_item, ett_mac_mgmt_msg_dcd_decoder);
- tlv_item = proto_tree_add_item(tlv_tree, hf_dcd_tlv_t_33_asr_m, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " frames");
- tlv_item = proto_tree_add_item(tlv_tree, hf_dcd_tlv_t_33_asr_l, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " frames");
+ proto_tree_add_item(tlv_tree, hf_dcd_tlv_t_33_asr_m, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tlv_tree, hf_dcd_tlv_t_33_asr_l, tvb, offset, 1, ENC_BIG_ENDIAN);
break;
}
case DCD_TLV_T_35_PAGING_GROUP_ID:
@@ -638,14 +627,12 @@ static int dissect_mac_mgmt_msg_dcd_decoder(tvbuff_t *tvb, packet_info *pinfo, p
}
case DCD_TLV_T_51_HYSTERSIS_MARGIN:
{
- tlv_item = add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_tlv_t_51_hysteresis_margin, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " dB");
+ add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_tlv_t_51_hysteresis_margin, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case DCD_TLV_T_52_TIME_TO_TRIGGER_DURATION:
{
- tlv_item = add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_tlv_t_52_time_to_trigger_duration, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " ms");
+ add_tlv_subtree(&tlv_info, dcd_tree, hf_dcd_tlv_t_52_time_to_trigger_duration, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case DCD_TLV_T_54_TRIGGER:
@@ -744,21 +731,21 @@ void proto_register_mac_mgmt_msg_dcd(void)
&hf_dcd_tlv_t_33_asr_l,
{
"ASR Switching Period (L)", "wmx.dcd.asr.l",
- FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL
+ FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_frame_frames, 0x0f, NULL, HFILL
}
},
{
&hf_dcd_tlv_t_33_asr_m,
{
"ASR Slot Length (M)", "wmx.dcd.asr.m",
- FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL
+ FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_frame_frames, 0xf0, NULL, HFILL
}
},
{
&hf_dcd_bs_eirp,
{
"BS EIRP", "wmx.dcd.bs_eirp",
- FT_INT16, BASE_DEC, NULL, 0x00, NULL, HFILL
+ FT_INT16, BASE_DEC|BASE_UNIT_STRING, &wimax_units_dbm, 0x00, NULL, HFILL
}
},
{
@@ -809,7 +796,7 @@ void proto_register_mac_mgmt_msg_dcd(void)
&hf_dcd_burst_freq,
{
"Frequency", "wmx.dcd.burst.freq",
- FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL
+ FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_khz, 0x00, NULL, HFILL
}
},
#if 0
@@ -952,7 +939,7 @@ void proto_register_mac_mgmt_msg_dcd(void)
&hf_dcd_eirxp,
{
"EIRXP (IR, max)", "wmx.dcd.eirxp",
- FT_INT16, BASE_DEC, NULL, 0x00, NULL, HFILL
+ FT_INT16, BASE_DEC|BASE_UNIT_STRING, &wimax_units_dbm, 0x00, NULL, HFILL
}
},
#endif
@@ -981,14 +968,14 @@ void proto_register_mac_mgmt_msg_dcd(void)
&hf_dcd_frequency,
{
"Downlink Center Frequency", "wmx.dcd.frequency",
- FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL
+ FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &wimax_units_khz, 0x00, NULL, HFILL
}
},
{
&hf_dcd_tlv_t_31_h_add_threshold,
{
"H_add Threshold", "wmx.dcd.h_add_threshold",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL
+ FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_db, 0x0, NULL, HFILL
}
},
#ifdef WIMAX_16D_2004
@@ -996,7 +983,7 @@ void proto_register_mac_mgmt_msg_dcd(void)
&hf_dcd_h_arq_ack_delay,
{
"H-ARQ ACK Delay for DL Burst", "wmx.dcd.h_arq_ack_delay_dl_burst",
- FT_UINT8, BASE_DEC, NULL, 0x00, "", HFILL
+ FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_frame_offset, 0x00, "", HFILL
}
},
#else
@@ -1004,7 +991,7 @@ void proto_register_mac_mgmt_msg_dcd(void)
&hf_dcd_h_arq_ack_delay,
{
"H-ARQ ACK Delay for UL Burst", "wmx.dcd.h_arq_ack_delay_ul_burst",
- FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL
+ FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_frame_offset, 0x00, NULL, HFILL
}
},
#endif
@@ -1012,7 +999,7 @@ void proto_register_mac_mgmt_msg_dcd(void)
&hf_dcd_tlv_t_32_h_delete_threshold,
{
"H_delete Threshold", "wmx.dcd.h_delete_threshold",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL
+ FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_db, 0x0, NULL, HFILL
}
},
{
@@ -1054,7 +1041,7 @@ void proto_register_mac_mgmt_msg_dcd(void)
&hf_dcd_tlv_t_51_hysteresis_margin,
{
"Hysteresis Margin", "wmx.dcd.hysteresis_margin",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL
+ FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_db, 0x0, NULL, HFILL
}
},
{
@@ -1146,7 +1133,7 @@ void proto_register_mac_mgmt_msg_dcd(void)
&hf_dcd_rss,
{
"RSS (IR, max)", "wmx.dcd.rss",
- FT_INT16, BASE_DEC, NULL, 0x00, "", HFILL
+ FT_INT16, BASE_DEC|BASE_UNIT_STRING, &wimax_units_dbm, 0x00, "", HFILL
}
},
#endif
@@ -1154,7 +1141,7 @@ void proto_register_mac_mgmt_msg_dcd(void)
&hf_dcd_rtg,
{
"RTG", "wmx.dcd.rtg",
- FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL
+ FT_UINT8, BASE_HEX|BASE_UNIT_STRING, &wimax_units_ps, 0x00, NULL, HFILL
}
},
#ifdef WIMAX_16D_2004
@@ -1177,7 +1164,7 @@ void proto_register_mac_mgmt_msg_dcd(void)
&hf_dcd_tlv_t_52_time_to_trigger_duration,
{
"Time to Trigger Duration", "wmx.dcd.time_trigger_duration",
- FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL
+ FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_ms, 0x0, NULL, HFILL
}
},
{
@@ -1198,7 +1185,7 @@ void proto_register_mac_mgmt_msg_dcd(void)
&hf_dcd_ttg,
{
"TTG", "wmx.dcd.ttg",
- FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL
+ FT_UINT16, BASE_HEX|BASE_UNIT_STRING, &wimax_units_ps, 0x00, NULL, HFILL
}
},
{
diff --git a/plugins/wimax/msg_rng_rsp.c b/plugins/wimax/msg_rng_rsp.c
index 8842061f2d..35ed143e2b 100644
--- a/plugins/wimax/msg_rng_rsp.c
+++ b/plugins/wimax/msg_rng_rsp.c
@@ -335,16 +335,14 @@ static int dissect_mac_mgmt_msg_rng_rsp_decoder(tvbuff_t *tvb, packet_info *pinf
break;
}
case RNG_RSP_OFFSET_FREQ_ADJUST: {
- tlv_item = add_tlv_subtree(&tlv_info, rng_rsp_tree, hf_rng_rsp_offset_freq_adjust, tvb, offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " Hz");
+ add_tlv_subtree(&tlv_info, rng_rsp_tree, hf_rng_rsp_offset_freq_adjust, tvb, offset, ENC_BIG_ENDIAN);
break;
}
case RNG_RSP_RANGING_STATUS:
ranging_status_item = add_tlv_subtree(&tlv_info, rng_rsp_tree, hf_rng_rsp_ranging_status, tvb, offset, ENC_BIG_ENDIAN);
break;
case RNG_RSP_DL_FREQ_OVERRIDE: {
- dl_freq_override_item = add_tlv_subtree(&tlv_info, rng_rsp_tree, hf_rng_rsp_dl_freq_override, tvb, offset, ENC_BIG_ENDIAN);
- proto_item_append_text(dl_freq_override_item, " kHz");
+ add_tlv_subtree(&tlv_info, rng_rsp_tree, hf_rng_rsp_dl_freq_override, tvb, offset, ENC_BIG_ENDIAN);
break;
}
case RNG_RSP_UL_CHANNEL_ID_OVERRIDE:
@@ -577,7 +575,7 @@ void proto_register_mac_mgmt_msg_rng_rsp(void)
&hf_rng_rsp_dl_freq_override,
{
"Downlink Frequency Override", "wmx.rng_rsp.dl_freq_override",
- FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL
+ FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &wimax_units_hz, 0x00, NULL, HFILL
}
},
{
@@ -768,7 +766,7 @@ void proto_register_mac_mgmt_msg_rng_rsp(void)
&hf_rng_rsp_offset_freq_adjust,
{
"Offset Frequency Adjust", "wmx.rng_rsp.offset_freq_adjust",
- FT_INT32, BASE_DEC, NULL, 0x00, NULL, HFILL
+ FT_INT32, BASE_DEC|BASE_UNIT_STRING, &wimax_units_hz, 0x00, NULL, HFILL
}
},
{
diff --git a/plugins/wimax/msg_ucd.c b/plugins/wimax/msg_ucd.c
index 27e86e37ce..985450e90e 100644
--- a/plugins/wimax/msg_ucd.c
+++ b/plugins/wimax/msg_ucd.c
@@ -35,6 +35,7 @@
#include <epan/packet.h>
#include "wimax_tlv.h"
#include "wimax_mac.h"
+#include "wimax_utils.h"
void proto_register_mac_mgmt_msg_ucd(void);
void proto_reg_handoff_mac_mgmt_msg_ucd(void);
@@ -68,7 +69,7 @@ static gint hf_ucd_tlv_t_159_band_amc_allocation_threshold = -1;
static gint hf_ucd_tlv_t_158_optional_permutation_ul_allocated_subchannels_bitmap = -1;
static gint hf_ucd_tlv_t_160_band_amc_release_threshold = -1;
static gint hf_ucd_tlv_t_161_band_amc_allocation_timer = -1;
-/* static gint hf_ucd_tlv_t_162_band_amc_release_timer = -1; */
+static gint hf_ucd_tlv_t_162_band_amc_release_timer = -1;
static gint hf_ucd_tlv_t_163_band_status_report_max_period = -1;
static gint hf_ucd_tlv_t_164_band_amc_retry_timer = -1;
static gint hf_ucd_tlv_t_171_harq_ack_delay_dl_burst = -1;
@@ -369,17 +370,13 @@ static int dissect_mac_mgmt_msg_ucd_decoder(tvbuff_t *tvb, packet_info *pinfo, p
}
case UCD_BURST_RANGING_DATA_RATIO:
{
- proto_item *tlv_item2;
- tlv_item2 = add_tlv_subtree(&tlv_info, tlv_tree, hf_ucd_burst_ranging_data_ratio, tvb, (offset+tlv_offset), ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item2, " dB");
+ add_tlv_subtree(&tlv_info, tlv_tree, hf_ucd_burst_ranging_data_ratio, tvb, (offset+tlv_offset), ENC_BIG_ENDIAN);
break;
}
#if 0 /* for OFDM */
case UCD_BURST_POWER_BOOST:
{
- proto_item *tlv_item2;
- tlv_item2 = add_tlv_subtree(&tlv_info, tlv_tree, hf_ucd_burst_power_boost, tvb, (offset+tlv_offset), ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item2, " dB");
+ add_tlv_subtree(&tlv_info, tlv_tree, hf_ucd_burst_power_boost, tvb, (offset+tlv_offset), ENC_BIG_ENDIAN);
break;
}
case UCD_BURST_TCS_ENABLE:
@@ -403,20 +400,17 @@ static int dissect_mac_mgmt_msg_ucd_decoder(tvbuff_t *tvb, packet_info *pinfo, p
}
case UCD_BW_REQ_SIZE:
{
- tlv_item1 = add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_bw_req_size, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item1, " PS");
+ add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_bw_req_size, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case UCD_RANGING_REQ_SIZE:
{
- tlv_item1 = add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_ranging_req_size, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item1, " PS");
+ add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_ranging_req_size, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case UCD_FREQUENCY:
{
- tlv_item1 = add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_freq, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item1, " kHz");
+ add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_freq, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case UCD_TLV_T_7_HO_RANGING_START:
@@ -440,56 +434,47 @@ static int dissect_mac_mgmt_msg_ucd_decoder(tvbuff_t *tvb, packet_info *pinfo, p
}
case UCD_TLV_T_159_BAND_AMC_ALLOCATION_THRESHHOLD:
{
- tlv_item1 = add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_159_band_amc_allocation_threshold, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item1, " dB");
+ add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_159_band_amc_allocation_threshold, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case UCD_TLV_T_160_BAND_AMC_RELEASE_THRESHOLD:
{
- tlv_item1 = add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_160_band_amc_release_threshold, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item1, " dB");
+ add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_160_band_amc_release_threshold, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case UCD_TLV_T_161_BAND_AMC_ALLOCATION_TIMER:
{
- tlv_item1 = add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_161_band_amc_allocation_timer, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item1, " frames");
+ add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_161_band_amc_allocation_timer, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case UCD_TLV_T_162_BAND_AMC_RELEASE_TIMER:
{
- tlv_item1 = add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_161_band_amc_allocation_timer, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item1, " frames");
+ add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_162_band_amc_release_timer, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case UCD_TLV_T_163_BAND_STATUS_REPORT_MAX_PERIOD:
{
- tlv_item1 = add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_163_band_status_report_max_period, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item1, " frames");
+ add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_163_band_status_report_max_period, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case UCD_TLV_T_164_BAND_AMC_RETRY_TIMER:
{
- tlv_item1 = add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_164_band_amc_retry_timer, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item1, " frames");
+ add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_164_band_amc_retry_timer, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case UCD_TLV_T_170_SAFETY_CHANNEL_RETRY_TIMER:
{
- tlv_item1 = add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_170_safety_channel_retry_timer, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item1, " frames");
+ add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_170_safety_channel_retry_timer, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case UCD_TLV_T_171_HARQ_ACK_DELAY_FOR_DL_BURST:
{
- tlv_item1 = add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_171_harq_ack_delay_dl_burst, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item1, " frames offset");
+ add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_171_harq_ack_delay_dl_burst, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case UCD_TLV_T_172_CQICH_BAND_AMC_TRANSITION_DELAY:
{
- tlv_item1 = add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_172_cqich_band_amc_transition_delay, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item1, " frames");
+ add_tlv_subtree(&tlv_info, ucd_tree, hf_ucd_tlv_t_172_cqich_band_amc_transition_delay, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
}
case UCD_TLV_T_174_MAXIMUM_RETRANSMISSION:
@@ -707,44 +692,42 @@ void proto_register_mac_mgmt_msg_ucd(void)
&hf_ucd_tlv_t_159_band_amc_allocation_threshold,
{
"Band AMC Allocation Threshold", "wmx.ucd.band_amc.allocation_threshold",
- FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ FT_UINT8, BASE_HEX|BASE_UNIT_STRING, &wimax_units_db, 0, NULL, HFILL
}
},
{
&hf_ucd_tlv_t_161_band_amc_allocation_timer,
{
"Band AMC Allocation Timer", "wmx.ucd.band_amc.allocation_timer",
- FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ FT_UINT8, BASE_HEX|BASE_UNIT_STRING, &wimax_units_frame_frames, 0, NULL, HFILL
}
},
{
&hf_ucd_tlv_t_160_band_amc_release_threshold,
{
"Band AMC Release Threshold", "wmx.ucd.band_amc.release_threshold",
- FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ FT_UINT8, BASE_HEX|BASE_UNIT_STRING, &wimax_units_db, 0, NULL, HFILL
}
},
-#if 0
{
&hf_ucd_tlv_t_162_band_amc_release_timer,
{
"Band AMC Release Timer", "wmx.ucd.band_amc.release_timer",
- FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ FT_UINT8, BASE_HEX|BASE_UNIT_STRING, &wimax_units_frame_frames, 0, NULL, HFILL
}
},
-#endif
{
&hf_ucd_tlv_t_164_band_amc_retry_timer,
{
"Band AMC Retry Timer", "wmx.ucd.band_amc.retry_timer",
- FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ FT_UINT8, BASE_HEX|BASE_UNIT_STRING, &wimax_units_frame_frames, 0, NULL, HFILL
}
},
{
&hf_ucd_tlv_t_163_band_status_report_max_period,
{
"Band Status Report MAC Period", "wmx.ucd.band_status.report_max_period",
- FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_frame_frames, 0, NULL, HFILL
}
},
{
@@ -765,7 +748,7 @@ void proto_register_mac_mgmt_msg_ucd(void)
&hf_ucd_burst_ranging_data_ratio,
{
"Ranging Data Ratio", "wmx.ucd.burst.ranging_data_ratio",
- FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_db, 0, NULL, HFILL
}
},
{
@@ -785,32 +768,32 @@ void proto_register_mac_mgmt_msg_ucd(void)
#if 0
{
&hf_ucd_burst_power_boost,
- {"Focused Contention Power Boost", "wmx.ucd.burst.power_boost", FT_UINT8, BASE_HEX, NULL, 0, "", HFILL}
+ {"Focused Contention Power Boost", "wmx.ucd.burst.power_boost", FT_UINT8, BASE_HEX|BASE_UNIT_STRING, &wimax_units_db, 0, NULL, HFILL}
},
{
&hf_ucd_burst_tcs_enable,
- {"TCS", "wmx.ucd.burst.tcs", FT_UINT8, BASE_DEC, VALS(vals_dcd_burst_tcs), 0, "", HFILL}
+ {"TCS", "wmx.ucd.burst.tcs", FT_UINT8, BASE_DEC, VALS(vals_dcd_burst_tcs), 0, NULL, HFILL}
},
#endif
{
&hf_ucd_bw_req_size,
{
"Bandwidth Request Opportunity Size", "wmx.ucd.bw_req_size",
- FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL
+ FT_UINT16, BASE_DEC|BASE_UNIT_STRING, &wimax_units_ps, 0, NULL, HFILL
}
},
{
&hf_ucd_tlv_t_172_cqich_band_amc_transition_delay,
{
"CQICH Band AMC-Transition Delay", "wmx.ucd.cqich_band_amc_transition_delay",
- FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_frame_frames, 0, NULL, HFILL
}
},
{
&hf_ucd_freq,
{
"Frequency", "wmx.ucd.frequency",
- FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL
+ FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &wimax_units_khz, 0, NULL, HFILL
}
},
{
@@ -824,7 +807,7 @@ void proto_register_mac_mgmt_msg_ucd(void)
&hf_ucd_tlv_t_171_harq_ack_delay_dl_burst,
{
"HARQ ACK Delay for DL Burst", "wmx.ucd.harq_ack_delay_dl_burst",
- FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
+ FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_frame_offset, 0, NULL, HFILL
}
},
{
@@ -945,7 +928,7 @@ void proto_register_mac_mgmt_msg_ucd(void)
&hf_ucd_ranging_req_size,
{
"Ranging Request Opportunity Size", "wmx.ucd.ranging_req_size",
- FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL
+ FT_UINT16, BASE_DEC|BASE_UNIT_STRING, &wimax_units_db, 0, NULL, HFILL
}
},
{
@@ -959,7 +942,7 @@ void proto_register_mac_mgmt_msg_ucd(void)
&hf_ucd_tlv_t_170_safety_channel_retry_timer,
{
"Safety Channel Release Timer", "wmx.ucd.safety_channel_release_timer",
- FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL
+ FT_UINT8, BASE_HEX|BASE_UNIT_STRING, &wimax_units_frame_frames, 0, NULL, HFILL
}
},
{
diff --git a/plugins/wimax/wimax_utils.c b/plugins/wimax/wimax_utils.c
index 83a86fe0d0..fbe77040f9 100644
--- a/plugins/wimax/wimax_utils.c
+++ b/plugins/wimax/wimax_utils.c
@@ -64,6 +64,18 @@ static gint ett_dl_service_flow_decoder = -1;
static dissector_handle_t eap_handle = NULL;
+const unit_name_string wimax_units_byte_bytes = { " byte", " bytes" };
+const unit_name_string wimax_units_bit_sec = { "bits/s", NULL };
+const unit_name_string wimax_units_db = { "dB", NULL };
+const unit_name_string wimax_units_dbm = { "dBm", NULL };
+const unit_name_string wimax_units_frame_frames = { " frame", " frames" };
+const unit_name_string wimax_units_frame_offset = { " frame offset", NULL };
+const unit_name_string wimax_units_hz = { "Hz", NULL };
+const unit_name_string wimax_units_khz = { "kHz", NULL };
+const unit_name_string wimax_units_ms = { "ms", NULL };
+const unit_name_string wimax_units_ps = { "PS", NULL };
+
+
/* The following two variables save the Scheduling Service type for
the Grant Management subheader dissector and track whether or not
one has been seen.
@@ -739,15 +751,15 @@ void proto_register_wimax_utility_decoders(void)
},
{ /* 7 Maximum Sustained Traffic Rate */
&hf_sfe_max_str,
- {"Maximum Sustained Traffic Rate", "wmx.sfe.msr", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}
+ {"Maximum Sustained Traffic Rate", "wmx.sfe.msr", FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &wimax_units_bit_sec, 0x0, NULL, HFILL}
},
{ /* 8 Maximum Traffic Burst */
&hf_sfe_max_traffic_burst,
- {"Maximum Traffic Burst", "wmx.sfe.max_traffic_burst", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}
+ {"Maximum Traffic Burst", "wmx.sfe.max_traffic_burst", FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &wimax_units_byte_bytes, 0x0, NULL, HFILL}
},
{ /* 9 Minimum Reserved Traffic Rate */
&hf_sfe_min_rtr,
- {"Minimum Reserved Traffic Rate", "wmx.sfe.mrr", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}
+ {"Minimum Reserved Traffic Rate", "wmx.sfe.mrr", FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &wimax_units_bit_sec, 0x0, NULL, HFILL}
},
{
/* 10 Reserved */
@@ -802,11 +814,11 @@ void proto_register_wimax_utility_decoders(void)
},
{ /* 13 Tolerated Jitter */
&hf_sfe_jitter,
- {"Tolerated Jitter", "wmx.sfe.jitter", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}
+ {"Tolerated Jitter", "wmx.sfe.jitter", FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &wimax_units_ms, 0x0, NULL, HFILL}
},
{ /* 14 Maximum Latency */
&hf_sfe_max_latency,
- {"Maximum Latency", "wmx.sfe.max_latency", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}
+ {"Maximum Latency", "wmx.sfe.max_latency", FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &wimax_units_ms, 0x0, NULL, HFILL}
},
{ /* 15 Fixed/Variable Length SDU */
&hf_sfe_fixed_len_sdu,
@@ -814,7 +826,7 @@ void proto_register_wimax_utility_decoders(void)
},
{ /* 16 SDU Size */
&hf_sfe_sdu_size,
- {"SDU Size", "wmx.sfe.sdu_size", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}
+ {"SDU Size", "wmx.sfe.sdu_size", FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &wimax_units_byte_bytes, 0x0, NULL, HFILL}
},
{ /* 17 SAID Onto Which SF Is Mapped */
&hf_sfe_target_said,
@@ -899,7 +911,7 @@ void proto_register_wimax_utility_decoders(void)
},
{ /* 31 Time Base */
&hf_sfe_time_base,
- {"Time Base", "wmx.sfe.time_base", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}
+ {"Time Base", "wmx.sfe.time_base", FT_UINT16, BASE_DEC|BASE_UNIT_STRING, &wimax_units_ms, 0x0, NULL, HFILL}
},
{ /* 32 Paging Preference */
&hf_sfe_paging_preference,
@@ -943,11 +955,11 @@ void proto_register_wimax_utility_decoders(void)
},
{ /* 40 Unsolicited Grant Interval */
&hf_sfe_unsolicited_grant_interval,
- {"Unsolicited Grant Interval", "wmx.sfe.unsolicited_grant_interval", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}
+ {"Unsolicited Grant Interval", "wmx.sfe.unsolicited_grant_interval", FT_UINT16, BASE_DEC|BASE_UNIT_STRING, &wimax_units_ms, 0x0, NULL, HFILL}
},
{ /* 41 Unsolicited Polling Interval */
&hf_sfe_unsolicited_polling_interval,
- {"Unsolicited Polling Interval", "wmx.sfe.unsolicited_polling_interval", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}
+ {"Unsolicited Polling Interval", "wmx.sfe.unsolicited_polling_interval", FT_UINT16, BASE_DEC|BASE_UNIT_STRING, &wimax_units_ms, 0x0, NULL, HFILL}
},
{ /* 42 PDU SN extended subheader for HARQ reordering */
&hf_sfe_pdu_sn_ext_subheader_reorder,
@@ -2214,16 +2226,13 @@ void wimax_service_flow_encodings_decoder(tvbuff_t *tvb, packet_info *pinfo, pro
proto_item_append_text(tlv_item, " (allowed values are 0-7)");
break;
case SFE_MAX_STR:
- tlv_item = add_tlv_subtree(&tlv_info, tree, hf_sfe_max_str, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " bps");
+ add_tlv_subtree(&tlv_info, tree, hf_sfe_max_str, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
case SFE_MAX_TRAFFIC_BURST:
- tlv_item = add_tlv_subtree(&tlv_info, tree, hf_sfe_max_traffic_burst, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " bytes");
+ add_tlv_subtree(&tlv_info, tree, hf_sfe_max_traffic_burst, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
case SFE_MIN_RTR:
- tlv_item = add_tlv_subtree(&tlv_info, tree, hf_sfe_min_rtr, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " bps");
+ add_tlv_subtree(&tlv_info, tree, hf_sfe_min_rtr, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
case SFE_RESERVED_10:
add_tlv_subtree(&tlv_info, tree, hf_sfe_reserved_10, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
@@ -2248,12 +2257,10 @@ void wimax_service_flow_encodings_decoder(tvbuff_t *tvb, packet_info *pinfo, pro
proto_tree_add_item(tlv_tree, hf_sfe_policy_rsvd1, tvb, offset, 1, ENC_BIG_ENDIAN);
break;
case SFE_TOLERATED_JITTER:
- tlv_item = add_tlv_subtree(&tlv_info, tree, hf_sfe_jitter, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " ms");
+ add_tlv_subtree(&tlv_info, tree, hf_sfe_jitter, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
case SFE_MAX_LATENCY:
- tlv_item = add_tlv_subtree(&tlv_info, tree, hf_sfe_max_latency, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " ms");
+ add_tlv_subtree(&tlv_info, tree, hf_sfe_max_latency, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
case SFE_FIXED_LEN_SDU:
add_tlv_subtree(&tlv_info, tree, hf_sfe_fixed_len_sdu, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
@@ -2261,8 +2268,7 @@ void wimax_service_flow_encodings_decoder(tvbuff_t *tvb, packet_info *pinfo, pro
case SFE_SDU_SIZE:
/* save the SDU size */
mac_sdu_length = tvb_get_guint8(tvb, offset);
- tlv_item = add_tlv_subtree(&tlv_info, tree, hf_sfe_sdu_size, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " bytes");
+ add_tlv_subtree(&tlv_info, tree, hf_sfe_sdu_size, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
case SFE_TARGET_SAID:
add_tlv_subtree(&tlv_info, tree, hf_sfe_target_said, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
@@ -2349,8 +2355,7 @@ void wimax_service_flow_encodings_decoder(tvbuff_t *tvb, packet_info *pinfo, pro
add_tlv_subtree(&tlv_info, tree, hf_sfe_sdu_inter_arrival_interval, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
case SFE_TIME_BASE:
- tlv_item = add_tlv_subtree(&tlv_info, tree, hf_sfe_time_base, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " ms");
+ add_tlv_subtree(&tlv_info, tree, hf_sfe_time_base, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
case SFE_PAGING_PREFERENCE:
add_tlv_subtree(&tlv_info, tree, hf_sfe_paging_preference, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
@@ -2382,12 +2387,10 @@ void wimax_service_flow_encodings_decoder(tvbuff_t *tvb, packet_info *pinfo, pro
proto_tree_add_item(tlv_tree, hf_sfe_cid_alloc_for_active_bs_cid, tvb, (offset+i), 2, ENC_BIG_ENDIAN);
break;
case SFE_UNSOLICITED_GRANT_INTERVAL:
- tlv_item = add_tlv_subtree(&tlv_info, tree, hf_sfe_unsolicited_grant_interval, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " ms");
+ add_tlv_subtree(&tlv_info, tree, hf_sfe_unsolicited_grant_interval, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
case SFE_UNSOLOCITED_POLLING_INTERVAL:
- tlv_item = add_tlv_subtree(&tlv_info, tree, hf_sfe_unsolicited_polling_interval, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
- proto_item_append_text(tlv_item, " ms");
+ add_tlv_subtree(&tlv_info, tree, hf_sfe_unsolicited_polling_interval, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
break;
case SFE_PDU_SN_EXT_SUBHEADER_HARQ_REORDER:
add_tlv_subtree(&tlv_info, tree, hf_sfe_pdu_sn_ext_subheader_reorder, tvb, offset-tlv_value_offset, ENC_BIG_ENDIAN);
diff --git a/plugins/wimax/wimax_utils.h b/plugins/wimax/wimax_utils.h
index cf9e61c29e..32bb7b0921 100644
--- a/plugins/wimax/wimax_utils.h
+++ b/plugins/wimax/wimax_utils.h
@@ -55,4 +55,16 @@ extern void wimax_security_capabilities_decoder(tvbuff_t *tvb, packet_info *pinf
extern void wimax_vendor_specific_information_decoder(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
extern guint wimax_common_tlv_encoding_decoder(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
+//Windows can't handle plugins using globals from epan, so copies are necessary
+extern const unit_name_string wimax_units_byte_bytes;
+extern const unit_name_string wimax_units_bit_sec;
+extern const unit_name_string wimax_units_db;
+extern const unit_name_string wimax_units_dbm;
+extern const unit_name_string wimax_units_frame_frames;
+extern const unit_name_string wimax_units_frame_offset;
+extern const unit_name_string wimax_units_hz;
+extern const unit_name_string wimax_units_khz;
+extern const unit_name_string wimax_units_ms;
+extern const unit_name_string wimax_units_ps;
+
#endif /* WIMAX_UTILS_H */