Compare commits

...

10 Commits

Author SHA1 Message Date
John Thacker 7dc0f853c6 prefs: Fix null defererences, remove obsolete function
Null dereference check to fix Coverity CIDs 1399640 and 1399641.
Remove a function that has been unused for a decade.
2024-02-27 20:25:05 -05:00
John Thacker 7583014fb0 MEGACO: Remove some long obsolete code
Remove some long obsolete code that dates back to before the
binary H.248 protocol was separated into an ASN.1 dissector
2024-02-27 19:03:21 -05:00
John Thacker d62cc2b175 MEGACO: Dissect statisticsDescriptor inside mediaDescriptor
Versions 2 and 3 of MEGACO (H.248 text) added statisticsDescriptor
to one of the options for a streamParm that can appear inside a
mediaDescriptor. Dissect it.

Part of #11080
2024-02-27 18:04:28 -05:00
Anders Broman 3d8e72fdf9 macos-setup-brew: Use LUA 5.4 2024-02-27 22:55:56 +00:00
Pau Espin fdcc57302f gsup: Add PCO IE
This IE is present in the ePDG Tunnel Request/Result messages to forward
protocol configs between the UE (IKEv2) and the PGW (GTPv2C), with ePDG in the middle.

https://gerrit.osmocom.org/c/osmo-gsm-manuals/+/36023
https://gerrit.osmocom.org/c/libosmocore/+/36024
2024-02-27 21:47:12 +00:00
Pau Espin 46123c430a gsup: Add ePDG Tunnel Request/Error/Result messages
These messages are used in the GSUP-based CEAI interface between
strongswan IPsec and osmo-epdg, which acts basically as a forwarding
protocol between IKEv2 on the UE side and GTPv2C S2b towards PGW + Diameter
SWm towards AAA Server.

Those fields are already present in libosmocore, GSUP reference
implementation [1].

[1] https://gitea.osmocom.org/osmocom/libosmocore/src/branch/master/include/osmocom/gsm/gsup.h#L205
2024-02-27 21:47:12 +00:00
Pascal Quantin 611ed98634 Diameter: add 3GPP Third-Context-Identifier AVP definition 2024-02-27 15:46:16 +01:00
John Thacker 84ffa648ea ENRP: Check for invalid parameter & error cause lengths
The value in the length field in ENRP parameters and error causes
include the length and types, and must be at least 4. In particular,
not erring on zero can cause an infinite loop.

https://datatracker.ietf.org/doc/html/rfc5354

Fix #19674
2024-02-27 09:05:03 -05:00
Jie Han 49d15ea4e8 Wifi(NAN): Minor fix for NAN dissector
Fix typos and bugs in NAN dissector.
Separate NDP and NDPE control field
2024-02-27 13:20:39 +00:00
Patrik Thunström 96ab1b9571 ptp: Improve display of rateRatio allowing more decimals. 2024-02-27 11:21:08 +00:00
8 changed files with 136 additions and 79 deletions

View File

@ -102,6 +102,7 @@ static guint64 enrp_total_msgs = 0;
static guint64 enrp_total_bytes = 0;
static expert_field ei_enrp_max_recursion_depth_reached;
static expert_field ei_enrp_invalid_length;
static void
dissect_parameters(tvbuff_t *, packet_info *, proto_tree *);
@ -206,6 +207,12 @@ dissect_error_causes(tvbuff_t *error_causes_tvb, packet_info *pinfo, proto_tree
offset = 0;
while(tvb_reported_length_remaining(error_causes_tvb, offset) > 0) {
length = tvb_get_ntohs(error_causes_tvb, offset + CAUSE_LENGTH_OFFSET);
if (length < 4) {
proto_tree_add_expert_format(parameter_tree, pinfo, &ei_enrp_invalid_length,
error_causes_tvb, offset + CAUSE_LENGTH_OFFSET, 2,
"Error cause length must be at least 4 bytes");
return;
}
total_length = WS_ROUNDUP_4(length);
error_cause_tvb = tvb_new_subset_length(error_causes_tvb, offset, total_length);
dissect_error_cause(error_cause_tvb, pinfo, parameter_tree);
@ -539,6 +546,11 @@ dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tre
offset = 0;
while((remaining_length = tvb_reported_length_remaining(parameters_tvb, offset)) > 0) {
length = tvb_get_ntohs(parameters_tvb, offset + PARAMETER_LENGTH_OFFSET);
if (length < 4) {
proto_tree_add_expert(tree, pinfo, &ei_enrp_invalid_length,
parameters_tvb, offset + PARAMETER_LENGTH_OFFSET, 2);
return;
}
total_length = WS_ROUNDUP_4(length);
if (remaining_length >= length)
total_length = MIN(total_length, remaining_length);
@ -1140,7 +1152,9 @@ proto_register_enrp(void)
static ei_register_info ei[] = {
{ &ei_enrp_max_recursion_depth_reached, { "enrp.max_recursion_depth_reached",
PI_PROTOCOL, PI_WARN, "Maximum allowed recursion depth reached - stop decoding", EXPFILL }}
PI_PROTOCOL, PI_WARN, "Maximum allowed recursion depth reached - stop decoding", EXPFILL }},
{ &ei_enrp_invalid_length, { "enrp.invalid_length",
PI_MALFORMED, PI_ERROR, "Parameter length must be at least 4 bytes", EXPFILL }}
};
static tap_param enrp_stat_params[] = {

View File

@ -79,6 +79,7 @@ enum osmo_gsup_iei {
OSMO_GSUP_ACCESS_POINT_NAME_IE = 0x12,
OSMO_GSUP_PDP_QOS_IE = 0x13,
OSMO_GSUP_CHARG_CHAR_IE = 0x14,
OSMO_GSUP_PCO_IE = 0x15,
OSMO_GSUP_RAND_IE = 0x20,
OSMO_GSUP_SRES_IE = 0x21,
OSMO_GSUP_KC_IE = 0x22,
@ -183,6 +184,10 @@ enum osmo_gsup_message_type {
OSMO_GSUP_MSGT_E_ABORT = 0x4b,
OSMO_GSUP_MSGT_E_ROUTING_ERROR = 0x4e,
OSMO_GSUP_MSGT_EPDG_TUNNEL_REQUEST = 0x50,
OSMO_GSUP_MSGT_EPDG_TUNNEL_ERROR = 0x51,
OSMO_GSUP_MSGT_EPDG_TUNNEL_RESULT = 0x52,
};
#define OSMO_GSUP_IS_MSGT_REQUEST(msgt) (((msgt) & 0b00000011) == 0b00)
@ -339,6 +344,7 @@ static const value_string gsup_iei_types[] = {
{ OSMO_GSUP_ACCESS_POINT_NAME_IE, "Access Point Name (APN)" },
{ OSMO_GSUP_PDP_QOS_IE, "PDP Quality of Service (QoS)" },
{ OSMO_GSUP_CHARG_CHAR_IE, "Charging Character" },
{ OSMO_GSUP_PCO_IE, "Protocol Configuration Options" },
{ OSMO_GSUP_RAND_IE, "RAND" },
{ OSMO_GSUP_SRES_IE, "SRES" },
{ OSMO_GSUP_KC_IE, "Kc" },
@ -422,6 +428,9 @@ static const value_string gsup_msg_types[] = {
{ OSMO_GSUP_MSGT_E_CLOSE, "E Close"},
{ OSMO_GSUP_MSGT_E_ABORT, "E Abort"},
{ OSMO_GSUP_MSGT_E_ROUTING_ERROR, "E Routing Error"},
{ OSMO_GSUP_MSGT_EPDG_TUNNEL_REQUEST, "ePDG Tunnel Request"},
{ OSMO_GSUP_MSGT_EPDG_TUNNEL_ERROR, "ePDG Tunnel Error"},
{ OSMO_GSUP_MSGT_EPDG_TUNNEL_RESULT, "ePDG Tunnel Result"},
{ 0, NULL }
};
@ -714,6 +723,7 @@ dissect_gsup_tlvs(tvbuff_t *tvb, int base_offs, int length, packet_info *pinfo,
gint apn_len;
guint32 ui32;
guint8 i;
tvbuff_t *subset_tvb;
tag = tvb_get_guint8(tvb, offset);
offset++;
@ -809,6 +819,23 @@ dissect_gsup_tlvs(tvbuff_t *tvb, int base_offs, int length, packet_info *pinfo,
case OSMO_GSUP_CHARG_CHAR_IE:
proto_tree_add_item(att_tree, hf_gsup_charg_char, tvb, offset, len, ENC_ASCII);
break;
case OSMO_GSUP_PCO_IE:
switch (msg_type) {
case OSMO_GSUP_MSGT_EPDG_TUNNEL_REQUEST:
/* PCO options as MS to network direction */
pinfo->link_dir = P2P_DIR_UL;
break;
case OSMO_GSUP_MSGT_EPDG_TUNNEL_ERROR:
case OSMO_GSUP_MSGT_EPDG_TUNNEL_RESULT:
/* PCO options as Network to MS direction: */
pinfo->link_dir = P2P_DIR_DL;
break;
default:
break;
}
subset_tvb = tvb_new_subset_length(tvb, offset, len);
de_sm_pco(subset_tvb, att_tree, pinfo, 0, len, NULL, 0);
break;
case OSMO_GSUP_CAUSE_IE:
proto_tree_add_item(att_tree, hf_gsup_cause, tvb, offset, len, ENC_NA);
break;

View File

@ -184,7 +184,8 @@ typedef enum
* Here are the global variables associated with
* the various user definable characteristics of the dissection
*
* MEGACO has two kinds of message formats: text and binary
* H.248/MEGACO has two kinds of message formats: text and binary (ASN.1).
* The binary message format is dissected in packet-h248.c
*
* global_megaco_raw_text determines whether we are going to display
* the raw text of the megaco message, much like the HTTP dissector does.
@ -193,11 +194,6 @@ typedef enum
* a detailed tree that expresses a somewhat more semantically meaningful
* decode.
*/
#if 0
static guint global_megaco_bin_sctp_port = PORT_MEGACO_BIN;
static guint global_megaco_bin_tcp_port = PORT_MEGACO_BIN;
static guint global_megaco_bin_udp_port = PORT_MEGACO_BIN;
#endif
static gboolean global_megaco_raw_text = TRUE;
static gboolean global_megaco_dissect_tree = TRUE;
@ -450,6 +446,8 @@ dissect_megaco_topologydescriptor(tvbuff_t *tvb, proto_tree *tree, gint tvb_RBRK
static void
dissect_megaco_errordescriptor(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, gint tvb_RBRKT, gint tvb_previous_offset);
static void
dissect_megaco_statisticsdescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command_line, gint tvb_RBRKT, gint tvb_previous_offset);
static void
dissect_megaco_TerminationStatedescriptor(tvbuff_t *tvb, proto_tree *tree, gint tvb_next_offset, gint tvb_current_offset);
static void
dissect_megaco_LocalRemotedescriptor(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint tvb_next_offset, gint tvb_current_offset, guint32 context, gboolean is_local);
@ -635,11 +633,6 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* d
*/
tvb_offset = megaco_tvb_skip_wsp(tvb, tvb_offset);
/* Quick fix for MEGACO not following the RFC, hopefully not breaking any thing
* Turned out to be TPKT in case of TCP, added some code to handle that.
*
* tvb_offset = tvb_find_guint8(tvb, tvb_offset, 5, 'M');
*/
if(!tvb_get_raw_bytes_as_stringz(tvb,tvb_offset,sizeof(word),word)) return tvb_captured_length(tvb);
/* Quick fix for MEGACO packet with Authentication Header,
@ -1716,6 +1709,7 @@ dissect_megaco_multiplexdescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_comman
#define MEGACO_LOCAL_CONTROL_TOKEN 3
#define MEGACO_STREAM_TOKEN 4
#define MEGACO_TERMINATION_STATE_DESC 5
// MEGACO_STATS_TOKEN is already defined as 6 above
static const megaco_tokens_t megaco_mediaParm_names[] = {
{ "Unknown-token", NULL }, /* 0 Pad so that the real headers start at index 1 */
@ -1724,6 +1718,7 @@ static const megaco_tokens_t megaco_mediaParm_names[] = {
{ "LocalControl", "O" }, /* 3 */
{ "Stream", "ST" }, /* 4 */
{ "TerminationState", "TS" }, /* 5 */
{ "Statistics", "SA" }, /* 6 */
};
/* Returns index of megaco_tokens_t */
@ -1816,6 +1811,14 @@ dissect_megaco_mediadescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command_li
tvb_RBRKT, tvb_current_offset);
tvb_current_offset = tvb_RBRKT;
break;
case MEGACO_STATS_TOKEN:
// dissect_megaco_statisticsdescriptor wants the previous
// offset, don't skip forward.
//tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_LBRKT+1);
dissect_megaco_statisticsdescriptor(tvb, megaco_mediadescriptor_tree,
tvb_RBRKT, tvb_current_offset);
tvb_current_offset = tvb_RBRKT;
break;
default:
break;
};
@ -3843,23 +3846,6 @@ proto_register_megaco(void)
megaco_module = prefs_register_protocol(proto_megaco, NULL);
#if 0
prefs_register_uint_preference(megaco_module, "sctp.bin_port",
"MEGACO Binary SCTP Port",
"Set the SCTP port for MEGACO binary messages",
10, &global_megaco_bin_sctp_port);
prefs_register_uint_preference(megaco_module, "tcp.bin_port",
"MEGACO Binary TCP Port",
"Set the TCP port for MEGACO binary messages",
10, &global_megaco_bin_tcp_port);
prefs_register_uint_preference(megaco_module, "udp.bin_port",
"MEGACO Binary UDP Port",
"Set the UDP port for MEGACO binary messages",
10, &global_megaco_bin_udp_port);
#endif
prefs_register_bool_preference(megaco_module, "display_raw_text",
"Display raw text for MEGACO message",
"Specifies that the raw text of the "
@ -3897,16 +3883,6 @@ proto_reg_handoff_megaco(void)
{
dissector_handle_t megaco_text_tcp_handle;
/*
* Variables to allow for proper deletion of dissector registration when
* the user changes port from the gui.
*/
#if 0
static guint bin_sctp_port;
static guint bin_tcp_port;
static guint bin_udp_port;
#endif
sdp_handle = find_dissector_add_dependency("sdp", proto_megaco);
h245_handle = find_dissector_add_dependency("h245dg", proto_megaco);
h248_handle = find_dissector_add_dependency("h248", proto_megaco);

View File

@ -6757,7 +6757,7 @@ proto_register_ptp(void)
},
{ &hf_ptp_as_fu_tlv_cumulative_rate_ratio,
{ "cumulativeRateRatio", "ptp.as.fu.cumulativeRateRatio",
FT_DOUBLE, BASE_DEC, NULL, 0x00,
FT_DOUBLE, BASE_NONE, NULL, 0x00,
NULL, HFILL }
},
{ &hf_ptp_as_fu_tlv_gm_base_indicator,

View File

@ -258,8 +258,13 @@ static int hf_nan_attr_ndp_ctrl_security_pres;
static int hf_nan_attr_ndp_ctrl_publish_id_pres;
static int hf_nan_attr_ndp_ctrl_responder_ndi_pres;
static int hf_nan_attr_ndp_ctrl_sepcific_info_pres;
static int hf_nan_attr_ndpe_ctrl_confirm;
static int hf_nan_attr_ndpe_ctrl_security_pres;
static int hf_nan_attr_ndpe_ctrl_publish_id_pres;
static int hf_nan_attr_ndpe_ctrl_responder_ndi_pres;
static int hf_nan_attr_ndpe_ctrl_gtk_requried;
static int hf_nan_attr_ndp_control;
static int hf_nan_attr_ndpe_control;
static int hf_nan_attr_ndp_responder_ndi;
static int hf_nan_attr_ndp_specific_info;
static int hf_nan_attr_ndpe_tlv_type;
@ -343,9 +348,9 @@ static int hf_nan_attr_ranging_setup_ftm_max_burst_duration;
static int hf_nan_attr_ranging_setup_ftm_format_bw;
static int hf_nan_attr_ftm_range_report;
static int hf_nan_attr_cipher_suite_capabilities;
static int hf_nan_attr_cipher_suite_capabilities_ndtksa_nmtksa_reply_counters;
static int hf_nan_attr_cipher_suite_capabilities_ndtksa_nmtksa_replay_counters;
static int hf_nan_attr_cipher_suite_capabilities_gtksa_igtksa_bigtksa_support;
static int hf_nan_attr_cipher_suite_capabilities_gtksa_reply_counters;
static int hf_nan_attr_cipher_suite_capabilities_gtksa_replay_counters;
static int hf_nan_attr_cipher_suite_capabilities_igtksa_bigtksa_cipher;
static int hf_nan_attr_cipher_suite_id;
static int hf_nan_attr_security_context_identifier;
@ -785,7 +790,7 @@ static const value_string cipher_suite_capabilities_nd_nm_tksa_replay_counters[]
static const value_string cipher_suite_capabilities_group_and_integrity_sa_support[] = {
{ 0, "GTKSA, IGTKSA, BIGTKSA are not supported" },
{ 1, "GTKSA and IGTKSA are supported, and BIGTKSA is not supported" },
{ 1, "GTKSA, IGTKSA, and BIGTKSA are supported" },
{ 2, "GTKSA, IGTKSA, and BIGTKSA are supported" },
{ 3, "Reserved" },
{ 0, NULL }
};
@ -1572,11 +1577,11 @@ dissect_attr_ndpe(proto_tree* attr_tree, tvbuff_t* tvb, gint offset, guint16 att
&hf_nan_status_1,
NULL
};
static int* const ndp_control_fields[] = {
&hf_nan_attr_ndp_ctrl_confirm,
&hf_nan_attr_ndp_ctrl_security_pres,
&hf_nan_attr_ndp_ctrl_publish_id_pres,
&hf_nan_attr_ndp_ctrl_responder_ndi_pres,
static int* const ndpe_control_fields[] = {
&hf_nan_attr_ndpe_ctrl_confirm,
&hf_nan_attr_ndpe_ctrl_security_pres,
&hf_nan_attr_ndpe_ctrl_publish_id_pres,
&hf_nan_attr_ndpe_ctrl_responder_ndi_pres,
&hf_nan_attr_ndpe_ctrl_gtk_requried,
NULL
};
@ -1595,8 +1600,8 @@ dissect_attr_ndpe(proto_tree* attr_tree, tvbuff_t* tvb, gint offset, guint16 att
proto_tree_add_item(attr_tree, hf_nan_reason_code, tvb, offset + 1, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(attr_tree, hf_nan_attr_ndp_initiator, tvb, offset + 2, 6, ENC_NA);
proto_tree_add_item(attr_tree, hf_nan_attr_ndp_id, tvb, offset + 8, 1, ENC_BIG_ENDIAN);
proto_tree_add_bitmask(attr_tree, tvb, offset + 9, hf_nan_attr_ndp_control,
ett_ndp_control, ndp_control_fields, ENC_LITTLE_ENDIAN);
proto_tree_add_bitmask(attr_tree, tvb, offset + 9, hf_nan_attr_ndpe_control,
ett_ndp_control, ndpe_control_fields, ENC_LITTLE_ENDIAN);
offset += 9;
dissected_len += 9;
@ -2384,9 +2389,9 @@ dissect_attr_cipher_suite_info(proto_tree* attr_tree, tvbuff_t* tvb, gint offset
guint dissected_len = 0;
proto_tree* caps_tree = proto_tree_add_subtree(attr_tree, tvb, sub_offset, 1, ett_nan_cipher_suite_capabilities, NULL, "Capabilities");
proto_tree_add_item(caps_tree, hf_nan_attr_cipher_suite_capabilities_ndtksa_nmtksa_reply_counters, tvb, sub_offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(caps_tree, hf_nan_attr_cipher_suite_capabilities_ndtksa_nmtksa_replay_counters, tvb, sub_offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(caps_tree, hf_nan_attr_cipher_suite_capabilities_gtksa_igtksa_bigtksa_support, tvb, sub_offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(caps_tree, hf_nan_attr_cipher_suite_capabilities_gtksa_reply_counters, tvb, sub_offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(caps_tree, hf_nan_attr_cipher_suite_capabilities_gtksa_replay_counters, tvb, sub_offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(caps_tree, hf_nan_attr_cipher_suite_capabilities_igtksa_bigtksa_cipher, tvb, sub_offset, 1, ENC_LITTLE_ENDIAN);
sub_offset++;
@ -3835,13 +3840,6 @@ proto_register_nan(void)
FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL
}
},
{ &hf_nan_attr_ndpe_ctrl_gtk_requried,
{
"GTK Required",
"wifi_nan.ndp.ctrl.gtk_required",
FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL
}
},
{ &hf_nan_attr_ndp_ctrl_sepcific_info_pres,
{
"NDP Specific Info Present",
@ -3849,6 +3847,41 @@ proto_register_nan(void)
FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL
}
},
{ &hf_nan_attr_ndpe_ctrl_confirm,
{
"Confirm Required",
"wifi_nan.ndpe.ctrl.confirm",
FT_BOOLEAN, 8, NULL, 0x1, NULL, HFILL
}
},
{ &hf_nan_attr_ndpe_ctrl_security_pres,
{
"Security Present",
"wifi_nan.ndpe.ctrl.security_pres",
FT_BOOLEAN, 8, NULL, 0x4, NULL, HFILL
}
},
{ &hf_nan_attr_ndpe_ctrl_publish_id_pres,
{
"Publish ID Present",
"wifi_nan.ndpe.ctrl.publish_id_pres",
FT_BOOLEAN, 8, NULL, 0x8, NULL, HFILL
}
},
{ &hf_nan_attr_ndpe_ctrl_responder_ndi_pres,
{
"Responder NDI Present",
"wifi_nan.ndpe.ctrl.responder_ndi_pres",
FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL
}
},
{ &hf_nan_attr_ndpe_ctrl_gtk_requried,
{
"GTK Required",
"wifi_nan.ndpe.ctrl.gtk_required",
FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL
}
},
{ &hf_nan_attr_ndp_control,
{
"NDP Control",
@ -3856,6 +3889,13 @@ proto_register_nan(void)
FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL
}
},
{ &hf_nan_attr_ndpe_control,
{
"NDPE Control",
"wifi_nan.ndpe.ctrl",
FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL
}
},
{ &hf_nan_attr_ndp_responder_ndi,
{
"Responder NDI",
@ -4437,10 +4477,10 @@ proto_register_nan(void)
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
}
},
{ &hf_nan_attr_cipher_suite_capabilities_ndtksa_nmtksa_reply_counters,
{ &hf_nan_attr_cipher_suite_capabilities_ndtksa_nmtksa_replay_counters,
{
"ND-TKSA and NM-TKSA Reply Counters",
"wifi_nan.cipher_suite.capabilities.reply_counters.ndtksa",
"ND-TKSA and NM-TKSA Replay Counters",
"wifi_nan.cipher_suite.capabilities.replay_counters.ndtksa",
FT_UINT8, BASE_HEX, VALS(cipher_suite_capabilities_nd_nm_tksa_replay_counters), 0x01, NULL, HFILL
}
},
@ -4451,10 +4491,10 @@ proto_register_nan(void)
FT_UINT8, BASE_HEX, VALS(cipher_suite_capabilities_group_and_integrity_sa_support), 0x06, NULL, HFILL
}
},
{ &hf_nan_attr_cipher_suite_capabilities_gtksa_reply_counters,
{ &hf_nan_attr_cipher_suite_capabilities_gtksa_replay_counters,
{
"GTKSA Reply Counters",
"wifi_nan.cipher_suite.capabilities.reply_counters.gtksa",
"GTKSA Replay Counters",
"wifi_nan.cipher_suite.capabilities.replay_counters.gtksa",
FT_UINT8, BASE_HEX, VALS(cipher_suite_capabilities_gtksa_replay_counters), 0x08, NULL, HFILL
}
},

View File

@ -1752,7 +1752,11 @@ range_t* prefs_get_range_value_real(pref_t *pref, pref_source_t source)
range_t* prefs_get_range_value(const char *module_name, const char* pref_name)
{
return prefs_get_range_value_real(prefs_find_preference(prefs_find_module(module_name), pref_name), pref_current);
pref_t *pref = prefs_find_preference(prefs_find_module(module_name), pref_name);
if (pref == NULL) {
return NULL;
}
return prefs_get_range_value_real(pref, pref_current);
}
void
@ -2369,17 +2373,6 @@ pref_clean_stash(pref_t *pref, gpointer unused _U_)
return 0;
}
#if 0
/* Return the value assigned to the given uint preference. */
guint
prefs_get_uint_preference(pref_t *pref)
{
if (pref && pref->type == PREF_UINT)
return *pref->varp.uint;
return 0;
}
#endif
/*
* Call a callback function, with a specified argument, for each preference
* in a given module.
@ -5068,7 +5061,11 @@ guint prefs_get_uint_value_real(pref_t *pref, pref_source_t source)
guint prefs_get_uint_value(const char *module_name, const char* pref_name)
{
return prefs_get_uint_value_real(prefs_find_preference(prefs_find_module(module_name), pref_name), pref_current);
pref_t *pref = prefs_find_preference(prefs_find_module(module_name), pref_name);
if (pref == NULL) {
return 0;
}
return prefs_get_uint_value_real(pref, pref_current);
}
char* prefs_get_password_value(pref_t *pref, pref_source_t source)

View File

@ -6412,6 +6412,9 @@
<avp name="PC5-Link-AMBR" code="1718" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
<type type-name="Integer32"/>
</avp>
<avp name="Third-Context-Identifier" code="1719" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
<type type-name="Unsigned32"/>
</avp>
<avp name="SMS-Information" code="2000" vendor-bit="must" vendor-id="TGPP">
<grouped>

View File

@ -140,7 +140,7 @@ fi
install_formulae "${ACTUAL_LIST[@]}"
if [ $INSTALL_OPTIONAL -ne 0 ] ; then
brew install lua@5.1 || printf "Lua 5.1 installation failed.\\n"
brew install lua@5.3 || printf "Lua 5.3 installation failed.\\n"
fi
if [ $INSTALL_DMG_DEPS -ne 0 ] ; then