diff --git a/src/spandsp/private/v150_1.h b/src/spandsp/private/v150_1.h index 68c60767..d1d2f9b4 100644 --- a/src/spandsp/private/v150_1.h +++ b/src/spandsp/private/v150_1.h @@ -327,7 +327,7 @@ struct v150_1_state_s struct { - v150_1_near_far_t parms; + v150_1_near_far_t near_parms; int8_t info_msg_preferences[10]; @@ -342,7 +342,7 @@ struct v150_1_state_s } near; struct { - v150_1_near_far_t parms; + v150_1_near_far_t far_parms; int break_source; int break_type; diff --git a/src/v150_1.c b/src/v150_1.c index 03fc64c3..20dc318c 100644 --- a/src/v150_1.c +++ b/src/v150_1.c @@ -1419,54 +1419,54 @@ static int status_report(v150_1_state_t *s, int reason) report.types.media_state_change.remote_state = s->remote_media_state; break; case V150_1_STATUS_REASON_CONNECTION_STATE_CHANGED: - report.types.connection_state_change.state = s->far.parms.connection_state; - report.types.connection_state_change.cleardown_reason = s->far.parms.cleardown_reason; + report.types.connection_state_change.state = s->far.far_parms.connection_state; + report.types.connection_state_change.cleardown_reason = s->far.far_parms.cleardown_reason; break; case V150_1_STATUS_REASON_CONNECTION_STATE_PHYSUP: - report.types.physup_parameters.selmod = s->far.parms.selmod; - report.types.physup_parameters.tdsr = s->far.parms.tdsr; - report.types.physup_parameters.rdsr = s->far.parms.rdsr; + report.types.physup_parameters.selmod = s->far.far_parms.selmod; + report.types.physup_parameters.tdsr = s->far.far_parms.tdsr; + report.types.physup_parameters.rdsr = s->far.far_parms.rdsr; - report.types.physup_parameters.txsen = s->far.parms.txsen; - report.types.physup_parameters.txsr = s->far.parms.txsr; - report.types.physup_parameters.rxsen = s->far.parms.rxsen; - report.types.physup_parameters.rxsr = s->far.parms.rxsr; + report.types.physup_parameters.txsen = s->far.far_parms.txsen; + report.types.physup_parameters.txsr = s->far.far_parms.txsr; + report.types.physup_parameters.rxsen = s->far.far_parms.rxsen; + report.types.physup_parameters.rxsr = s->far.far_parms.rxsr; break; case V150_1_STATUS_REASON_CONNECTION_STATE_CONNECTED: - report.types.connect_parameters.selmod = s->far.parms.selmod; - report.types.connect_parameters.tdsr = s->far.parms.tdsr; - report.types.connect_parameters.rdsr = s->far.parms.rdsr; + report.types.connect_parameters.selmod = s->far.far_parms.selmod; + report.types.connect_parameters.tdsr = s->far.far_parms.tdsr; + report.types.connect_parameters.rdsr = s->far.far_parms.rdsr; - report.types.connect_parameters.selected_compression_direction = s->far.parms.selected_compression_direction; - report.types.connect_parameters.selected_compression = s->far.parms.selected_compression; - report.types.connect_parameters.selected_error_correction = s->far.parms.selected_error_correction; + report.types.connect_parameters.selected_compression_direction = s->far.far_parms.selected_compression_direction; + report.types.connect_parameters.selected_compression = s->far.far_parms.selected_compression; + report.types.connect_parameters.selected_error_correction = s->far.far_parms.selected_error_correction; - report.types.connect_parameters.compression_tx_dictionary_size = s->far.parms.compression_tx_dictionary_size; - report.types.connect_parameters.compression_rx_dictionary_size = s->far.parms.compression_rx_dictionary_size; - report.types.connect_parameters.compression_tx_string_length = s->far.parms.compression_tx_string_length; - report.types.connect_parameters.compression_rx_string_length = s->far.parms.compression_rx_string_length; - report.types.connect_parameters.compression_tx_history_size = s->far.parms.compression_tx_history_size; - report.types.connect_parameters.compression_rx_history_size = s->far.parms.compression_rx_history_size; + report.types.connect_parameters.compression_tx_dictionary_size = s->far.far_parms.compression_tx_dictionary_size; + report.types.connect_parameters.compression_rx_dictionary_size = s->far.far_parms.compression_rx_dictionary_size; + report.types.connect_parameters.compression_tx_string_length = s->far.far_parms.compression_tx_string_length; + report.types.connect_parameters.compression_rx_string_length = s->far.far_parms.compression_rx_string_length; + report.types.connect_parameters.compression_tx_history_size = s->far.far_parms.compression_tx_history_size; + report.types.connect_parameters.compression_rx_history_size = s->far.far_parms.compression_rx_history_size; /* I_RAW-OCTET is always available. There is no selection flag for it. */ report.types.connect_parameters.i_raw_octet_available = true; - report.types.connect_parameters.i_raw_bit_available = s->far.parms.i_raw_bit_available; - report.types.connect_parameters.i_frame_available = s->far.parms.i_frame_available; + report.types.connect_parameters.i_raw_bit_available = s->far.far_parms.i_raw_bit_available; + report.types.connect_parameters.i_frame_available = s->far.far_parms.i_frame_available; /* I_OCTET is an oddity, as you need to know in advance whether there will be a DLCI field present. So, functionally its really like 2 different types of message. */ - report.types.connect_parameters.i_octet_with_dlci_available = s->far.parms.i_octet_with_dlci_available; - report.types.connect_parameters.i_octet_without_dlci_available = s->far.parms.i_octet_without_dlci_available; - report.types.connect_parameters.i_char_stat_available = s->far.parms.i_char_stat_available; - report.types.connect_parameters.i_char_dyn_available = s->far.parms.i_char_dyn_available; + report.types.connect_parameters.i_octet_with_dlci_available = s->far.far_parms.i_octet_with_dlci_available; + report.types.connect_parameters.i_octet_without_dlci_available = s->far.far_parms.i_octet_without_dlci_available; + report.types.connect_parameters.i_char_stat_available = s->far.far_parms.i_char_stat_available; + report.types.connect_parameters.i_char_dyn_available = s->far.far_parms.i_char_dyn_available; /* Unlike I_OCTET, I_OCTET-CS is only defined without a DLCI field. */ - report.types.connect_parameters.i_octet_cs_available = s->far.parms.i_octet_cs_available; - report.types.connect_parameters.i_char_stat_cs_available = s->far.parms.i_char_stat_cs_available; - report.types.connect_parameters.i_char_dyn_cs_available = s->far.parms.i_char_dyn_cs_available; + report.types.connect_parameters.i_octet_cs_available = s->far.far_parms.i_octet_cs_available; + report.types.connect_parameters.i_char_stat_cs_available = s->far.far_parms.i_char_stat_cs_available; + report.types.connect_parameters.i_char_dyn_cs_available = s->far.far_parms.i_char_dyn_cs_available; break; case V150_1_STATUS_REASON_DATA_FORMAT_CHANGED: - report.types.data_format_change.bits = 5 + ((s->far.parms.data_format_code >> 5) & 0x03); - report.types.data_format_change.parity_code = (s->far.parms.data_format_code >> 2) & 0x07; - report.types.data_format_change.stop_bits = 1 + (s->far.parms.data_format_code & 0x03); + report.types.data_format_change.bits = 5 + ((s->far.far_parms.data_format_code >> 5) & 0x03); + report.types.data_format_change.parity_code = (s->far.far_parms.data_format_code >> 2) & 0x07; + report.types.data_format_change.stop_bits = 1 + (s->far.far_parms.data_format_code & 0x03); break; case V150_1_STATUS_REASON_BREAK_RECEIVED: report.types.break_received.source = s->far.break_source; @@ -1478,8 +1478,8 @@ static int status_report(v150_1_state_t *s, int reason) case V150_1_STATUS_REASON_RATE_RENEGOTIATION_RECEIVED: break; case V150_1_STATUS_REASON_BUSY_CHANGED: - report.types.busy_change.local_busy = s->near.parms.busy; - report.types.busy_change.far_busy = s->far.parms.busy; + report.types.busy_change.local_busy = s->near.near_parms.busy; + report.types.busy_change.far_busy = s->far.far_parms.busy; break; } /*endswitch*/ @@ -2082,16 +2082,16 @@ SPAN_DECLARE(int) v150_1_set_bits_per_character(v150_1_state_t *s, int bits) return -1; /*endif*/ bits -= 5; - s->near.parms.data_format_code &= 0x9F; - s->near.parms.data_format_code |= ((bits << 5) & 0x60); + s->near.near_parms.data_format_code &= 0x9F; + s->near.near_parms.data_format_code |= ((bits << 5) & 0x60); return 0; } /*- End of function --------------------------------------------------------*/ SPAN_DECLARE(int) v150_1_set_parity(v150_1_state_t *s, int mode) { - s->near.parms.data_format_code &= 0xE3; - s->near.parms.data_format_code |= ((mode << 2) & 0x1C); + s->near.near_parms.data_format_code &= 0xE3; + s->near.near_parms.data_format_code |= ((mode << 2) & 0x1C); return 0; } /*- End of function --------------------------------------------------------*/ @@ -2102,8 +2102,8 @@ SPAN_DECLARE(int) v150_1_set_stop_bits(v150_1_state_t *s, int bits) return -1; /*endif*/ bits -= 1; - s->near.parms.data_format_code &= 0xFC; - s->near.parms.data_format_code |= (bits & 0x03); + s->near.near_parms.data_format_code &= 0xFC; + s->near.near_parms.data_format_code |= (bits & 0x03); return 0; } /*- End of function --------------------------------------------------------*/ @@ -2122,7 +2122,7 @@ static int select_info_msg_type(v150_1_state_t *s) s->near.info_stream_msg_id = s->near.info_msg_preferences[i]; return 0; case V150_1_MSGID_I_RAW_BIT: - if (s->near.parms.i_raw_bit_available) + if (s->near.near_parms.i_raw_bit_available) { s->near.info_stream_msg_id = s->near.info_msg_preferences[i]; return 0; @@ -2134,7 +2134,7 @@ static int select_info_msg_type(v150_1_state_t *s) s->near.info_stream_msg_id = s->near.info_msg_preferences[i]; return 0; case V150_1_MSGID_I_CHAR_STAT: - if (s->near.parms.i_char_stat_available) + if (s->near.near_parms.i_char_stat_available) { s->near.info_stream_msg_id = s->near.info_msg_preferences[i]; return 0; @@ -2142,7 +2142,7 @@ static int select_info_msg_type(v150_1_state_t *s) /*endif*/ break; case V150_1_MSGID_I_CHAR_DYN: - if (s->near.parms.i_char_dyn_available) + if (s->near.near_parms.i_char_dyn_available) { s->near.info_stream_msg_id = s->near.info_msg_preferences[i]; return 0; @@ -2150,7 +2150,7 @@ static int select_info_msg_type(v150_1_state_t *s) /*endif*/ break; case V150_1_MSGID_I_FRAME: - if (s->near.parms.i_frame_available) + if (s->near.near_parms.i_frame_available) { s->near.info_stream_msg_id = s->near.info_msg_preferences[i]; return 0; @@ -2158,7 +2158,7 @@ static int select_info_msg_type(v150_1_state_t *s) /*endif*/ break; case V150_1_MSGID_I_OCTET_CS: - if (s->near.parms.i_octet_cs_available) + if (s->near.near_parms.i_octet_cs_available) { s->near.info_stream_msg_id = s->near.info_msg_preferences[i]; return 0; @@ -2166,7 +2166,7 @@ static int select_info_msg_type(v150_1_state_t *s) /*endif*/ break; case V150_1_MSGID_I_CHAR_STAT_CS: - if (s->near.parms.i_char_stat_cs_available) + if (s->near.near_parms.i_char_stat_cs_available) { s->near.info_stream_msg_id = s->near.info_msg_preferences[i]; return 0; @@ -2174,7 +2174,7 @@ static int select_info_msg_type(v150_1_state_t *s) /*endif*/ break; case V150_1_MSGID_I_CHAR_DYN_CS: - if (s->near.parms.i_char_dyn_cs_available) + if (s->near.near_parms.i_char_dyn_cs_available) { s->near.info_stream_msg_id = s->near.info_msg_preferences[i]; return 0; @@ -2235,49 +2235,49 @@ SPAN_DECLARE(int) v150_1_tx_init(v150_1_state_t *s) pkt[0] = V150_1_MSGID_INIT; /* At this stage we just tell the far end the things we support. */ i = 0; - if (s->near.parms.necrxch_option) + if (s->near.near_parms.necrxch_option) i |= 0x80; /*endif*/ - if (s->near.parms.ecrxch_option) + if (s->near.near_parms.ecrxch_option) i |= 0x40; /*endif*/ - if (s->near.parms.xid_profile_exchange_supported) + if (s->near.near_parms.xid_profile_exchange_supported) i |= 0x20; /*endif*/ - if (s->near.parms.asymmetric_data_types_supported) + if (s->near.near_parms.asymmetric_data_types_supported) i |= 0x10; /*endif*/ - if (s->near.parms.i_raw_bit_supported) + if (s->near.near_parms.i_raw_bit_supported) i |= 0x08; /*endif*/ - if (s->near.parms.i_frame_supported) + if (s->near.near_parms.i_frame_supported) i |= 0x04; /*endif*/ - if (s->near.parms.i_char_stat_supported) + if (s->near.near_parms.i_char_stat_supported) i |= 0x02; /*endif*/ - if (s->near.parms.i_char_dyn_supported) + if (s->near.near_parms.i_char_dyn_supported) i |= 0x01; /*endif*/ pkt[1] = i; i = 0; - if (s->near.parms.i_octet_cs_supported) + if (s->near.near_parms.i_octet_cs_supported) i |= 0x80; /*endif*/ - if (s->near.parms.i_char_stat_cs_supported) + if (s->near.near_parms.i_char_stat_cs_supported) i |= 0x40; /*endif*/ - if (s->near.parms.i_char_dyn_cs_supported) + if (s->near.near_parms.i_char_dyn_cs_supported) i |= 0x20; /*endif*/ pkt[2] = i; span_log(&s->logging, SPAN_LOG_FLOW, "Sending INIT\n"); - log_init(s, &s->near.parms); + log_init(s, &s->near.near_parms); res = sprt_tx(&s->sprt, SPRT_TCID_EXPEDITED_RELIABLE_SEQUENCED, pkt, 3); if (res >= 0) { - s->near.parms.connection_state = V150_1_STATE_INITED; - if (s->far.parms.connection_state >= V150_1_STATE_INITED) + s->near.near_parms.connection_state = V150_1_STATE_INITED; + if (s->far.far_parms.connection_state >= V150_1_STATE_INITED) { select_info_msg_type(s); s->joint_connection_state = V150_1_STATE_INITED; @@ -2296,43 +2296,43 @@ SPAN_DECLARE(int) v150_1_tx_xid_xchg(v150_1_state_t *s) uint8_t pkt[256]; res = -1; - if (!s->far.parms.xid_profile_exchange_supported) + if (!s->far.far_parms.xid_profile_exchange_supported) return -1; /*endif*/ pkt[0] = V150_1_MSGID_XID_XCHG; - pkt[1] = s->near.parms.ecp; + pkt[1] = s->near.near_parms.ecp; i = 0; - if (s->near.parms.v42bis_supported) + if (s->near.near_parms.v42bis_supported) i |= 0x80; /*endif*/ - if (s->near.parms.v44_supported) + if (s->near.near_parms.v44_supported) i |= 0x40; /*endif*/ - if (s->near.parms.mnp5_supported) + if (s->near.near_parms.mnp5_supported) i |= 0x20; /*endif*/ pkt[2] = i; - if (s->near.parms.v42bis_supported) + if (s->near.near_parms.v42bis_supported) { - pkt[3] = s->near.parms.v42bis_p0; - put_net_unaligned_uint16(&pkt[4], s->near.parms.v42bis_p1); - pkt[6] = s->near.parms.v42bis_p2; + pkt[3] = s->near.near_parms.v42bis_p0; + put_net_unaligned_uint16(&pkt[4], s->near.near_parms.v42bis_p1); + pkt[6] = s->near.near_parms.v42bis_p2; } else { memset(&pkt[3], 0, 4); } /*endif*/ - if (s->near.parms.v44_supported) + if (s->near.near_parms.v44_supported) { - pkt[7] = s->near.parms.v44_c0; - pkt[8] = s->near.parms.v44_p0; - put_net_unaligned_uint16(&pkt[9], s->near.parms.v44_p1t); - put_net_unaligned_uint16(&pkt[11], s->near.parms.v44_p1r); - pkt[13] = s->near.parms.v44_p2t; - pkt[14] = s->near.parms.v44_p2r; - put_net_unaligned_uint16(&pkt[15], s->near.parms.v44_p3t); - put_net_unaligned_uint16(&pkt[17], s->near.parms.v44_p3r); + pkt[7] = s->near.near_parms.v44_c0; + pkt[8] = s->near.near_parms.v44_p0; + put_net_unaligned_uint16(&pkt[9], s->near.near_parms.v44_p1t); + put_net_unaligned_uint16(&pkt[11], s->near.near_parms.v44_p1r); + pkt[13] = s->near.near_parms.v44_p2t; + pkt[14] = s->near.near_parms.v44_p2r; + put_net_unaligned_uint16(&pkt[15], s->near.near_parms.v44_p3t); + put_net_unaligned_uint16(&pkt[17], s->near.near_parms.v44_p3r); } else { @@ -2355,22 +2355,22 @@ SPAN_DECLARE(int) v150_1_tx_jm_info(v150_1_state_t *s) for (i = 0; i < 16; i++) { - if (s->near.parms.jm_category_id_seen[i]) + if (s->near.near_parms.jm_category_id_seen[i]) { span_log(&s->logging, SPAN_LOG_FLOW, " JM %s 0x%x\n", v150_1_jm_category_to_str(i), - s->near.parms.jm_category_info[i]); + s->near.near_parms.jm_category_info[i]); } /*endif*/ } /*endfor*/ - if (s->near.parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_MODULATION_MODES]) + if (s->near.near_parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_MODULATION_MODES]) { for (i = 0; i < 16; i++) { - bit = s->near.parms.jm_category_info[V150_1_JM_CATEGORY_ID_MODULATION_MODES] & (0x8000 >> i); + bit = s->near.near_parms.jm_category_info[V150_1_JM_CATEGORY_ID_MODULATION_MODES] & (0x8000 >> i); if (bit) { span_log(&s->logging, SPAN_LOG_FLOW, " JM %s\n", v150_1_jm_info_modulation_to_str(bit)); @@ -2385,9 +2385,9 @@ SPAN_DECLARE(int) v150_1_tx_jm_info(v150_1_state_t *s) len = 1; for (i = 0; i < 16; i++) { - if (s->near.parms.jm_category_id_seen[i]) + if (s->near.near_parms.jm_category_id_seen[i]) { - put_net_unaligned_uint16(&pkt[len], (i << 12) | (s->near.parms.jm_category_info[i] & 0x0FFF)); + put_net_unaligned_uint16(&pkt[len], (i << 12) | (s->near.near_parms.jm_category_info[i] & 0x0FFF)); len += 2; } /*endif*/ @@ -2404,7 +2404,7 @@ SPAN_DECLARE(int) v150_1_tx_start_jm(v150_1_state_t *s) uint8_t pkt[256]; res = -1; - if (s->near.parms.connection_state != V150_1_STATE_IDLE) + if (s->near.near_parms.connection_state != V150_1_STATE_IDLE) { pkt[0] = V150_1_MSGID_START_JM; res = sprt_tx(&s->sprt, SPRT_TCID_EXPEDITED_RELIABLE_SEQUENCED, pkt, 1); @@ -2424,64 +2424,64 @@ SPAN_DECLARE(int) v150_1_tx_connect(v150_1_state_t *s) res = -1; pkt[0] = V150_1_MSGID_CONNECT; - pkt[1] = (s->near.parms.selmod << 2) | s->near.parms.selected_compression_direction; - pkt[2] = (s->near.parms.selected_compression << 4) | s->near.parms.selected_error_correction; - put_net_unaligned_uint16(&pkt[3], s->near.parms.tdsr); - put_net_unaligned_uint16(&pkt[5], s->near.parms.rdsr); + pkt[1] = (s->near.near_parms.selmod << 2) | s->near.near_parms.selected_compression_direction; + pkt[2] = (s->near.near_parms.selected_compression << 4) | s->near.near_parms.selected_error_correction; + put_net_unaligned_uint16(&pkt[3], s->near.near_parms.tdsr); + put_net_unaligned_uint16(&pkt[5], s->near.near_parms.rdsr); available_data_types = 0; - if (s->near.parms.i_octet_with_dlci_available) + if (s->near.near_parms.i_octet_with_dlci_available) available_data_types |= 0x8000; /*endif*/ - if (s->near.parms.i_octet_without_dlci_available) + if (s->near.near_parms.i_octet_without_dlci_available) available_data_types |= 0x4000; /*endif*/ - if (s->near.parms.i_raw_bit_available) + if (s->near.near_parms.i_raw_bit_available) available_data_types |= 0x2000; /*endif*/ - if (s->near.parms.i_frame_available) + if (s->near.near_parms.i_frame_available) available_data_types |= 0x1000; /*endif*/ - if (s->near.parms.i_char_stat_available) + if (s->near.near_parms.i_char_stat_available) available_data_types |= 0x0800; /*endif*/ - if (s->near.parms.i_char_dyn_available) + if (s->near.near_parms.i_char_dyn_available) available_data_types |= 0x0400; /*endif*/ - if (s->near.parms.i_octet_cs_available) + if (s->near.near_parms.i_octet_cs_available) available_data_types |= 0x0200; /*endif*/ - if (s->near.parms.i_char_stat_cs_available) + if (s->near.near_parms.i_char_stat_cs_available) available_data_types |= 0x0100; /*endif*/ - if (s->near.parms.i_char_dyn_cs_available) + if (s->near.near_parms.i_char_dyn_cs_available) available_data_types |= 0x0080; /*endif*/ put_net_unaligned_uint16(&pkt[7], available_data_types); len = 9; - if (s->near.parms.selected_compression == V150_1_COMPRESSION_V42BIS || s->near.parms.selected_compression == V150_1_COMPRESSION_V44) + if (s->near.near_parms.selected_compression == V150_1_COMPRESSION_V42BIS || s->near.near_parms.selected_compression == V150_1_COMPRESSION_V44) { /* This is only included if V.42bis or V.44 is selected. For no compression, or MNP5 this is omitted */ - put_net_unaligned_uint16(&pkt[9], s->near.parms.compression_tx_dictionary_size); - put_net_unaligned_uint16(&pkt[11], s->near.parms.compression_rx_dictionary_size); - pkt[13] = s->near.parms.compression_tx_string_length; - pkt[14] = s->near.parms.compression_rx_string_length; + put_net_unaligned_uint16(&pkt[9], s->near.near_parms.compression_tx_dictionary_size); + put_net_unaligned_uint16(&pkt[11], s->near.near_parms.compression_rx_dictionary_size); + pkt[13] = s->near.near_parms.compression_tx_string_length; + pkt[14] = s->near.near_parms.compression_rx_string_length; len += 6; } /*endif*/ - if (s->near.parms.selected_compression == V150_1_COMPRESSION_V44) + if (s->near.near_parms.selected_compression == V150_1_COMPRESSION_V44) { /* This is only included if V.44 is selected. For no compression, MNP5, or V.42bis this is omitted */ - put_net_unaligned_uint16(&pkt[15], s->near.parms.compression_tx_history_size); - put_net_unaligned_uint16(&pkt[15], s->near.parms.compression_rx_history_size); + put_net_unaligned_uint16(&pkt[15], s->near.near_parms.compression_tx_history_size); + put_net_unaligned_uint16(&pkt[15], s->near.near_parms.compression_rx_history_size); len += 4; } /*endif*/ res = sprt_tx(&s->sprt, SPRT_TCID_EXPEDITED_RELIABLE_SEQUENCED, pkt, len); if (res >= 0) { - s->near.parms.connection_state = V150_1_STATE_CONNECTED; - if (s->near.parms.connection_state >= V150_1_STATE_CONNECTED) + s->near.near_parms.connection_state = V150_1_STATE_CONNECTED; + if (s->near.near_parms.connection_state >= V150_1_STATE_CONNECTED) s->joint_connection_state = V150_1_STATE_CONNECTED; /*endif*/ span_log(&s->logging, SPAN_LOG_FLOW, "Connect sent\n"); @@ -2497,7 +2497,7 @@ SPAN_DECLARE(int) v150_1_tx_break(v150_1_state_t *s, int source, int type, int d uint8_t pkt[256]; res = -1; - if (s->near.parms.connection_state != V150_1_STATE_IDLE) + if (s->near.near_parms.connection_state != V150_1_STATE_IDLE) { pkt[0] = V150_1_MSGID_BREAK; pkt[1] = (source << 4) | type; @@ -2520,7 +2520,7 @@ SPAN_DECLARE(int) v150_1_tx_break_ack(v150_1_state_t *s) uint8_t pkt[256]; res = -1; - if (s->near.parms.connection_state != V150_1_STATE_IDLE) + if (s->near.near_parms.connection_state != V150_1_STATE_IDLE) { pkt[0] = V150_1_MSGID_BREAKACK; res = sprt_tx(&s->sprt, SPRT_TCID_EXPEDITED_RELIABLE_SEQUENCED, pkt, 1); @@ -2550,32 +2550,32 @@ SPAN_DECLARE(int) v150_1_tx_mr_event(v150_1_state_t *s, int event_id) case V150_1_MR_EVENT_ID_RETRAIN: pkt[2] = V150_1_MR_EVENT_REASON_NULL; len = 3; - s->near.parms.connection_state = V150_1_STATE_RETRAIN; + s->near.near_parms.connection_state = V150_1_STATE_RETRAIN; s->joint_connection_state = V150_1_STATE_RETRAIN; break; case V150_1_MR_EVENT_ID_RATE_RENEGOTIATION: pkt[2] = V150_1_MR_EVENT_REASON_NULL; len = 3; - s->near.parms.connection_state = V150_1_STATE_RATE_RENEGOTIATION; + s->near.near_parms.connection_state = V150_1_STATE_RATE_RENEGOTIATION; s->joint_connection_state = V150_1_STATE_RATE_RENEGOTIATION; break; case V150_1_MR_EVENT_ID_PHYSUP: pkt[2] = 0; - i = (s->near.parms.selmod << 2); - if (s->near.parms.txsen) + i = (s->near.near_parms.selmod << 2); + if (s->near.near_parms.txsen) i |= 0x02; /*endif*/ - if (s->near.parms.rxsen) + if (s->near.near_parms.rxsen) i |= 0x01; /*endif*/ pkt[3] = i; - put_net_unaligned_uint16(&pkt[4], s->near.parms.tdsr); - put_net_unaligned_uint16(&pkt[4], s->near.parms.rdsr); - pkt[8] = (s->near.parms.txsen) ? s->near.parms.txsr : V150_1_SYMBOL_RATE_NULL; - pkt[9] = (s->near.parms.rxsen) ? s->near.parms.rxsr : V150_1_SYMBOL_RATE_NULL; + put_net_unaligned_uint16(&pkt[4], s->near.near_parms.tdsr); + put_net_unaligned_uint16(&pkt[4], s->near.near_parms.rdsr); + pkt[8] = (s->near.near_parms.txsen) ? s->near.near_parms.txsr : V150_1_SYMBOL_RATE_NULL; + pkt[9] = (s->near.near_parms.rxsen) ? s->near.near_parms.rxsr : V150_1_SYMBOL_RATE_NULL; len = 10; - s->near.parms.connection_state = V150_1_STATE_PHYSUP; - if (s->far.parms.connection_state >= V150_1_STATE_PHYSUP) + s->near.near_parms.connection_state = V150_1_STATE_PHYSUP; + if (s->far.far_parms.connection_state >= V150_1_STATE_PHYSUP) s->joint_connection_state = V150_1_STATE_PHYSUP; /*endif*/ break; @@ -2603,7 +2603,7 @@ SPAN_DECLARE(int) v150_1_tx_cleardown(v150_1_state_t *s, int reason) res = -1; - if (s->near.parms.connection_state != V150_1_STATE_IDLE) + if (s->near.near_parms.connection_state != V150_1_STATE_IDLE) { pkt[0] = V150_1_MSGID_CLEARDOWN; pkt[1] = reason; @@ -2612,7 +2612,7 @@ SPAN_DECLARE(int) v150_1_tx_cleardown(v150_1_state_t *s, int reason) res = sprt_tx(&s->sprt, SPRT_TCID_EXPEDITED_RELIABLE_SEQUENCED, pkt, 4); if (res >= 0) { - s->near.parms.connection_state = V150_1_STATE_IDLE; + s->near.near_parms.connection_state = V150_1_STATE_IDLE; span_log(&s->logging, SPAN_LOG_FLOW, "Cleardown sent\n"); } /*endif*/ @@ -2631,45 +2631,45 @@ SPAN_DECLARE(int) v150_1_tx_prof_xchg(v150_1_state_t *s) res = -1; pkt[0] = V150_1_MSGID_PROF_XCHG; i = 0; - if (s->near.parms.v42_lapm_supported) + if (s->near.near_parms.v42_lapm_supported) i |= 0x40; /*endif*/ - if (s->near.parms.v42_annex_a_supported) + if (s->near.near_parms.v42_annex_a_supported) i |= 0x10; /*endif*/ - if (s->near.parms.v44_supported) + if (s->near.near_parms.v44_supported) i |= 0x04; /*endif*/ - if (s->near.parms.v42bis_supported) + if (s->near.near_parms.v42bis_supported) i |= 0x01; /*endif*/ pkt[1] = i; i = 0; - if (s->near.parms.mnp5_supported) + if (s->near.near_parms.mnp5_supported) i |= 0x40; /*endif*/ pkt[2] = i; - if (s->near.parms.v42bis_supported) + if (s->near.near_parms.v42bis_supported) { - pkt[3] = s->near.parms.v42bis_p0; - put_net_unaligned_uint16(&pkt[4], s->near.parms.v42bis_p1); - pkt[6] = s->near.parms.v42bis_p2; + pkt[3] = s->near.near_parms.v42bis_p0; + put_net_unaligned_uint16(&pkt[4], s->near.near_parms.v42bis_p1); + pkt[6] = s->near.near_parms.v42bis_p2; } else { memset(&pkt[3], 0, 4); } /*endif*/ - if (s->near.parms.v44_supported) + if (s->near.near_parms.v44_supported) { - pkt[7] = s->near.parms.v44_c0; - pkt[8] = s->near.parms.v44_p0; - put_net_unaligned_uint16(&pkt[9], s->near.parms.v44_p1t); - put_net_unaligned_uint16(&pkt[11], s->near.parms.v44_p1r); - pkt[13] = s->near.parms.v44_p2t; - pkt[14] = s->near.parms.v44_p2r; - put_net_unaligned_uint16(&pkt[15], s->near.parms.v44_p3t); - put_net_unaligned_uint16(&pkt[17], s->near.parms.v44_p3r); + pkt[7] = s->near.near_parms.v44_c0; + pkt[8] = s->near.near_parms.v44_p0; + put_net_unaligned_uint16(&pkt[9], s->near.near_parms.v44_p1t); + put_net_unaligned_uint16(&pkt[11], s->near.near_parms.v44_p1r); + pkt[13] = s->near.near_parms.v44_p2t; + pkt[14] = s->near.near_parms.v44_p2r; + put_net_unaligned_uint16(&pkt[15], s->near.near_parms.v44_p3t); + put_net_unaligned_uint16(&pkt[17], s->near.near_parms.v44_p3r); } else { @@ -2698,7 +2698,7 @@ static int v150_1_build_i_raw_octet(v150_1_state_t *s, uint8_t pkt[], int max_le static int v150_1_build_i_raw_bit(v150_1_state_t *s, uint8_t pkt[], int max_len, const uint8_t buf[], int len) { - if (!s->far.parms.i_raw_bit_available) + if (!s->far.far_parms.i_raw_bit_available) return -1; /*endif*/ if (len > max_len - 3) @@ -2717,24 +2717,24 @@ static int v150_1_build_i_octet(v150_1_state_t *s, uint8_t pkt[], int max_len, c { int header; - if (!s->far.parms.i_octet_without_dlci_available && !s->far.parms.i_octet_with_dlci_available) + if (!s->far.far_parms.i_octet_without_dlci_available && !s->far.far_parms.i_octet_with_dlci_available) return -1; /*endif*/ if (len > max_len - 3) return -1; /*endif*/ pkt[0] = V150_1_MSGID_I_OCTET; - if (s->far.parms.i_octet_with_dlci_available) + if (s->far.far_parms.i_octet_with_dlci_available) { /* The DLCI may be one or two octets long. */ - if ((s->near.parms.dlci & 0x01) == 0) + if ((s->near.near_parms.dlci & 0x01) == 0) { - pkt[1] = s->near.parms.dlci & 0xFF; + pkt[1] = s->near.near_parms.dlci & 0xFF; header = 2; } else { - put_net_unaligned_uint16(&pkt[1], s->near.parms.dlci); + put_net_unaligned_uint16(&pkt[1], s->near.near_parms.dlci); header = 3; } /*endif*/ @@ -2752,14 +2752,14 @@ static int v150_1_build_i_octet(v150_1_state_t *s, uint8_t pkt[], int max_len, c static int v150_1_build_i_char_stat(v150_1_state_t *s, uint8_t pkt[], int max_len, const uint8_t buf[], int len) { - if (!s->far.parms.i_char_stat_available) + if (!s->far.far_parms.i_char_stat_available) return -1; /*endif*/ if (len > max_len - 2) return -1; /*endif*/ pkt[0] = V150_1_MSGID_I_CHAR_STAT; - pkt[1] = s->near.parms.data_format_code; + pkt[1] = s->near.near_parms.data_format_code; memcpy(&pkt[2], buf, len); len += 2; return len; @@ -2768,14 +2768,14 @@ static int v150_1_build_i_char_stat(v150_1_state_t *s, uint8_t pkt[], int max_le static int v150_1_build_i_char_dyn(v150_1_state_t *s, uint8_t pkt[], int max_len, const uint8_t buf[], int len) { - if (!s->far.parms.i_char_dyn_available) + if (!s->far.far_parms.i_char_dyn_available) return -1; /*endif*/ if (len > max_len - 2) return -1; /*endif*/ pkt[0] = V150_1_MSGID_I_CHAR_DYN; - pkt[1] = s->near.parms.data_format_code; + pkt[1] = s->near.near_parms.data_format_code; memcpy(&pkt[2], buf, len); len += 2; return len; @@ -2788,7 +2788,7 @@ static int v150_1_build_i_frame(v150_1_state_t *s, uint8_t pkt[], int max_len, c data_frame_state = 0; - if (!s->far.parms.i_frame_available) + if (!s->far.far_parms.i_frame_available) return -1; /*endif*/ if (len > max_len - 2) @@ -2804,16 +2804,16 @@ static int v150_1_build_i_frame(v150_1_state_t *s, uint8_t pkt[], int max_len, c static int v150_1_build_i_octet_cs(v150_1_state_t *s, uint8_t pkt[], int max_len, const uint8_t buf[], int len) { - if (!s->far.parms.i_octet_cs_available) + if (!s->far.far_parms.i_octet_cs_available) return -1; /*endif*/ if (len > max_len - 3) return -1; /*endif*/ pkt[0] = V150_1_MSGID_I_OCTET_CS; - put_net_unaligned_uint16(&pkt[1], s->near.parms.octet_cs_next_seq_no & 0xFFFF); + put_net_unaligned_uint16(&pkt[1], s->near.near_parms.octet_cs_next_seq_no & 0xFFFF); memcpy(&pkt[3], buf, len); - s->near.parms.octet_cs_next_seq_no += len; + s->near.near_parms.octet_cs_next_seq_no += len; len += 3; return len; } @@ -2821,35 +2821,35 @@ static int v150_1_build_i_octet_cs(v150_1_state_t *s, uint8_t pkt[], int max_len static int v150_1_build_i_char_stat_cs(v150_1_state_t *s, uint8_t pkt[], int max_len, const uint8_t buf[], int len) { - if (!s->far.parms.i_char_stat_cs_available) + if (!s->far.far_parms.i_char_stat_cs_available) return -1; /*endif*/ if (len > max_len - 4) return -1; /*endif*/ pkt[0] = V150_1_MSGID_I_CHAR_STAT_CS; - pkt[1] = s->near.parms.data_format_code; - put_net_unaligned_uint16(&pkt[2], s->near.parms.octet_cs_next_seq_no & 0xFFFF); + pkt[1] = s->near.near_parms.data_format_code; + put_net_unaligned_uint16(&pkt[2], s->near.near_parms.octet_cs_next_seq_no & 0xFFFF); memcpy(&pkt[4], buf, len); len += 4; - s->near.parms.octet_cs_next_seq_no += len; + s->near.near_parms.octet_cs_next_seq_no += len; return len; } /*- End of function --------------------------------------------------------*/ static int v150_1_build_i_char_dyn_cs(v150_1_state_t *s, uint8_t pkt[], int max_len, const uint8_t buf[], int len) { - if (!s->far.parms.i_char_dyn_cs_available) + if (!s->far.far_parms.i_char_dyn_cs_available) return -1; /*endif*/ if (len > max_len - 4) return -1; /*endif*/ pkt[0] = V150_1_MSGID_I_CHAR_DYN_CS; - pkt[1] = s->near.parms.data_format_code; - put_net_unaligned_uint16(&pkt[2], s->near.parms.octet_cs_next_seq_no & 0xFFFF); + pkt[1] = s->near.near_parms.data_format_code; + put_net_unaligned_uint16(&pkt[2], s->near.near_parms.octet_cs_next_seq_no & 0xFFFF); memcpy(&pkt[4], buf, len); - s->near.parms.octet_cs_next_seq_no += len; + s->near.near_parms.octet_cs_next_seq_no += len; len += 4; return len; } @@ -2926,37 +2926,37 @@ static int v150_1_process_init(v150_1_state_t *s, const uint8_t buf[], int len) } /*endif*/ /* Just capture what the far end says about its capabilities */ - s->far.parms.necrxch_option = (buf[1] & 0x80) != 0; - s->far.parms.ecrxch_option = (buf[1] & 0x40) != 0; - s->far.parms.xid_profile_exchange_supported = (buf[1] & 0x20) != 0; - s->far.parms.asymmetric_data_types_supported = (buf[1] & 0x10) != 0; - s->far.parms.i_raw_bit_supported = (buf[1] & 0x08) != 0; - s->far.parms.i_frame_supported = (buf[1] & 0x04) != 0; - s->far.parms.i_char_stat_supported = (buf[1] & 0x02) != 0; - s->far.parms.i_char_dyn_supported = (buf[1] & 0x01) != 0; - s->far.parms.i_octet_cs_supported = (buf[2] & 0x80) != 0; - s->far.parms.i_char_stat_cs_supported = (buf[2] & 0x40) != 0; - s->far.parms.i_char_dyn_cs_supported = (buf[2] & 0x20) != 0; + s->far.far_parms.necrxch_option = (buf[1] & 0x80) != 0; + s->far.far_parms.ecrxch_option = (buf[1] & 0x40) != 0; + s->far.far_parms.xid_profile_exchange_supported = (buf[1] & 0x20) != 0; + s->far.far_parms.asymmetric_data_types_supported = (buf[1] & 0x10) != 0; + s->far.far_parms.i_raw_bit_supported = (buf[1] & 0x08) != 0; + s->far.far_parms.i_frame_supported = (buf[1] & 0x04) != 0; + s->far.far_parms.i_char_stat_supported = (buf[1] & 0x02) != 0; + s->far.far_parms.i_char_dyn_supported = (buf[1] & 0x01) != 0; + s->far.far_parms.i_octet_cs_supported = (buf[2] & 0x80) != 0; + s->far.far_parms.i_char_stat_cs_supported = (buf[2] & 0x40) != 0; + s->far.far_parms.i_char_dyn_cs_supported = (buf[2] & 0x20) != 0; /* Now sift out what will be available, because both ends support the features */ - s->near.parms.i_raw_bit_available = s->near.parms.i_raw_bit_supported && s->far.parms.i_raw_bit_supported; - s->near.parms.i_frame_available = s->near.parms.i_frame_supported && s->far.parms.i_frame_supported; - s->near.parms.i_octet_with_dlci_available = s->near.parms.dlci_supported; - s->near.parms.i_octet_without_dlci_available = !s->near.parms.dlci_supported; - s->near.parms.i_char_stat_available = s->near.parms.i_char_stat_supported && s->far.parms.i_char_stat_supported; - s->near.parms.i_char_dyn_available = s->near.parms.i_char_dyn_supported && s->far.parms.i_char_dyn_supported; - s->near.parms.i_octet_cs_available = s->near.parms.i_octet_cs_supported && s->far.parms.i_octet_cs_supported; - s->near.parms.i_char_stat_cs_available = s->near.parms.i_char_stat_cs_supported && s->far.parms.i_char_stat_cs_supported; - s->near.parms.i_char_dyn_cs_available = s->near.parms.i_char_dyn_cs_supported && s->far.parms.i_char_dyn_cs_supported; - - if (s->far.parms.connection_state >= V150_1_STATE_INITED) + s->near.near_parms.i_raw_bit_available = s->near.near_parms.i_raw_bit_supported && s->far.far_parms.i_raw_bit_supported; + s->near.near_parms.i_frame_available = s->near.near_parms.i_frame_supported && s->far.far_parms.i_frame_supported; + s->near.near_parms.i_octet_with_dlci_available = s->near.near_parms.dlci_supported; + s->near.near_parms.i_octet_without_dlci_available = !s->near.near_parms.dlci_supported; + s->near.near_parms.i_char_stat_available = s->near.near_parms.i_char_stat_supported && s->far.far_parms.i_char_stat_supported; + s->near.near_parms.i_char_dyn_available = s->near.near_parms.i_char_dyn_supported && s->far.far_parms.i_char_dyn_supported; + s->near.near_parms.i_octet_cs_available = s->near.near_parms.i_octet_cs_supported && s->far.far_parms.i_octet_cs_supported; + s->near.near_parms.i_char_stat_cs_available = s->near.near_parms.i_char_stat_cs_supported && s->far.far_parms.i_char_stat_cs_supported; + s->near.near_parms.i_char_dyn_cs_available = s->near.near_parms.i_char_dyn_cs_supported && s->far.far_parms.i_char_dyn_cs_supported; + + if (s->far.far_parms.connection_state >= V150_1_STATE_INITED) select_info_msg_type(s); /*endif*/ span_log(&s->logging, SPAN_LOG_FLOW, "Received INIT\n"); - log_init(s, &s->far.parms); + log_init(s, &s->far.far_parms); - s->far.parms.connection_state = V150_1_STATE_INITED; - if (s->near.parms.connection_state >= V150_1_STATE_INITED) + s->far.far_parms.connection_state = V150_1_STATE_INITED; + if (s->near.near_parms.connection_state >= V150_1_STATE_INITED) s->joint_connection_state = V150_1_STATE_INITED; /*endif*/ status_report(s, V150_1_STATUS_REASON_CONNECTION_STATE_CHANGED); @@ -2978,38 +2978,38 @@ static int v150_1_process_xid_xchg(v150_1_state_t *s, const uint8_t buf[], int l return -1; } /*endif*/ - s->far.parms.ecp = buf[1]; - - s->far.parms.v42bis_supported = (buf[2] & 0x80) != 0; - s->far.parms.v44_supported = (buf[2] & 0x40) != 0; - s->far.parms.mnp5_supported = (buf[2] & 0x20) != 0; - - s->far.parms.v42bis_p0 = buf[3]; - s->far.parms.v42bis_p1 = get_net_unaligned_uint16(&buf[4]); - s->far.parms.v42bis_p2 = buf[6]; - s->far.parms.v44_c0 = buf[7]; - s->far.parms.v44_p0 = buf[8]; - s->far.parms.v44_p1t = get_net_unaligned_uint16(&buf[9]); - s->far.parms.v44_p1r = get_net_unaligned_uint16(&buf[11]); - s->far.parms.v44_p2t = buf[13]; - s->far.parms.v44_p2r = buf[14]; - s->far.parms.v44_p3t = get_net_unaligned_uint16(&buf[15]); - s->far.parms.v44_p3r = get_net_unaligned_uint16(&buf[17]); - - span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis %ssupported\n", (s->far.parms.v42bis_supported) ? "" : "not "); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 %ssupported\n", (s->far.parms.v44_supported) ? "" : "not "); - span_log(&s->logging, SPAN_LOG_FLOW, " MNP5 %ssupported\n", (s->far.parms.mnp5_supported) ? "" : "not "); - span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis P0 %d\n", s->far.parms.v42bis_p0); - span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis P1 %d\n", s->far.parms.v42bis_p1); - span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis P2 %d\n", s->far.parms.v42bis_p2); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 C0 %d\n", s->far.parms.v44_c0); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P1 %d\n", s->far.parms.v44_p0); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P1T %d\n", s->far.parms.v44_p1t); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P1R %d\n", s->far.parms.v44_p1r); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P2T %d\n", s->far.parms.v44_p2t); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P2R %d\n", s->far.parms.v44_p2r); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P3T %d\n", s->far.parms.v44_p3t); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P3R %d\n", s->far.parms.v44_p3r); + s->far.far_parms.ecp = buf[1]; + + s->far.far_parms.v42bis_supported = (buf[2] & 0x80) != 0; + s->far.far_parms.v44_supported = (buf[2] & 0x40) != 0; + s->far.far_parms.mnp5_supported = (buf[2] & 0x20) != 0; + + s->far.far_parms.v42bis_p0 = buf[3]; + s->far.far_parms.v42bis_p1 = get_net_unaligned_uint16(&buf[4]); + s->far.far_parms.v42bis_p2 = buf[6]; + s->far.far_parms.v44_c0 = buf[7]; + s->far.far_parms.v44_p0 = buf[8]; + s->far.far_parms.v44_p1t = get_net_unaligned_uint16(&buf[9]); + s->far.far_parms.v44_p1r = get_net_unaligned_uint16(&buf[11]); + s->far.far_parms.v44_p2t = buf[13]; + s->far.far_parms.v44_p2r = buf[14]; + s->far.far_parms.v44_p3t = get_net_unaligned_uint16(&buf[15]); + s->far.far_parms.v44_p3r = get_net_unaligned_uint16(&buf[17]); + + span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis %ssupported\n", (s->far.far_parms.v42bis_supported) ? "" : "not "); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 %ssupported\n", (s->far.far_parms.v44_supported) ? "" : "not "); + span_log(&s->logging, SPAN_LOG_FLOW, " MNP5 %ssupported\n", (s->far.far_parms.mnp5_supported) ? "" : "not "); + span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis P0 %d\n", s->far.far_parms.v42bis_p0); + span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis P1 %d\n", s->far.far_parms.v42bis_p1); + span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis P2 %d\n", s->far.far_parms.v42bis_p2); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 C0 %d\n", s->far.far_parms.v44_c0); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P1 %d\n", s->far.far_parms.v44_p0); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P1T %d\n", s->far.far_parms.v44_p1t); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P1R %d\n", s->far.far_parms.v44_p1r); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P2T %d\n", s->far.far_parms.v44_p2t); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P2R %d\n", s->far.far_parms.v44_p2r); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P3T %d\n", s->far.far_parms.v44_p3t); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P3R %d\n", s->far.far_parms.v44_p3r); /* TODO: */ return 0; @@ -3038,28 +3038,28 @@ static int v150_1_process_jm_info(v150_1_state_t *s, const uint8_t buf[], int le for (i = 1; i < len; i += 2) { id = (buf[i] >> 4) & 0x0F; - s->far.parms.jm_category_id_seen[id] = true; - s->far.parms.jm_category_info[id] = get_net_unaligned_uint16(&buf[i]) & 0x0FFF; + s->far.far_parms.jm_category_id_seen[id] = true; + s->far.far_parms.jm_category_info[id] = get_net_unaligned_uint16(&buf[i]) & 0x0FFF; } /*endfor*/ for (i = 0; i < 16; i++) { - if (s->far.parms.jm_category_id_seen[i]) + if (s->far.far_parms.jm_category_id_seen[i]) { span_log(&s->logging, SPAN_LOG_WARNING, " JM %s 0x%x\n", v150_1_jm_category_to_str(i), - s->far.parms.jm_category_info[i]); + s->far.far_parms.jm_category_info[i]); } /*endif*/ } /*endfor*/ - if (s->far.parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_MODULATION_MODES]) + if (s->far.far_parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_MODULATION_MODES]) { for (i = 0; i < 16; i++) { - bit = s->far.parms.jm_category_info[V150_1_JM_CATEGORY_ID_MODULATION_MODES] & (0x8000 >> i); + bit = s->far.far_parms.jm_category_info[V150_1_JM_CATEGORY_ID_MODULATION_MODES] & (0x8000 >> i); if (bit) { span_log(&s->logging, SPAN_LOG_FLOW, " JM %s\n", v150_1_jm_info_modulation_to_str(bit)); @@ -3111,40 +3111,40 @@ static int v150_1_process_connect(v150_1_state_t *s, const uint8_t buf[], int le return -1; } /*endif*/ - s->far.parms.selmod = (buf[1] >> 2) & 0x3F; - s->far.parms.selected_compression_direction = buf[1] & 0x03; - s->far.parms.selected_compression = (buf[2] >> 4) & 0x0F; - s->far.parms.selected_error_correction = buf[2] & 0x0F; - s->far.parms.tdsr = get_net_unaligned_uint16(&buf[3]); - s->far.parms.rdsr = get_net_unaligned_uint16(&buf[5]); + s->far.far_parms.selmod = (buf[1] >> 2) & 0x3F; + s->far.far_parms.selected_compression_direction = buf[1] & 0x03; + s->far.far_parms.selected_compression = (buf[2] >> 4) & 0x0F; + s->far.far_parms.selected_error_correction = buf[2] & 0x0F; + s->far.far_parms.tdsr = get_net_unaligned_uint16(&buf[3]); + s->far.far_parms.rdsr = get_net_unaligned_uint16(&buf[5]); available_data_types = get_net_unaligned_uint16(&buf[7]); - s->far.parms.i_octet_with_dlci_available = (available_data_types & 0x8000) != 0; - s->far.parms.i_octet_without_dlci_available = (available_data_types & 0x4000) != 0; - s->far.parms.i_raw_bit_available = (available_data_types & 0x2000) != 0; - s->far.parms.i_frame_available = (available_data_types & 0x1000) != 0; - s->far.parms.i_char_stat_available = (available_data_types & 0x0800) != 0; - s->far.parms.i_char_dyn_available = (available_data_types & 0x0400) != 0; - s->far.parms.i_octet_cs_available = (available_data_types & 0x0200) != 0; - s->far.parms.i_char_stat_cs_available = (available_data_types & 0x0100) != 0; - s->far.parms.i_char_dyn_cs_available = (available_data_types & 0x0080) != 0; - - span_log(&s->logging, SPAN_LOG_FLOW, " Modulation %s\n", v150_1_modulation_to_str(s->far.parms.selmod)); - span_log(&s->logging, SPAN_LOG_FLOW, " Compression direction %s\n", v150_1_compression_direction_to_str(s->far.parms.selected_compression_direction)); - span_log(&s->logging, SPAN_LOG_FLOW, " Compression %s\n", v150_1_compression_to_str(s->far.parms.selected_compression)); - span_log(&s->logging, SPAN_LOG_FLOW, " Error correction %s\n", v150_1_error_correction_to_str(s->far.parms.selected_error_correction)); - span_log(&s->logging, SPAN_LOG_FLOW, " Tx data rate %d\n", s->far.parms.tdsr); - span_log(&s->logging, SPAN_LOG_FLOW, " Rx data rate %d\n", s->far.parms.rdsr); + s->far.far_parms.i_octet_with_dlci_available = (available_data_types & 0x8000) != 0; + s->far.far_parms.i_octet_without_dlci_available = (available_data_types & 0x4000) != 0; + s->far.far_parms.i_raw_bit_available = (available_data_types & 0x2000) != 0; + s->far.far_parms.i_frame_available = (available_data_types & 0x1000) != 0; + s->far.far_parms.i_char_stat_available = (available_data_types & 0x0800) != 0; + s->far.far_parms.i_char_dyn_available = (available_data_types & 0x0400) != 0; + s->far.far_parms.i_octet_cs_available = (available_data_types & 0x0200) != 0; + s->far.far_parms.i_char_stat_cs_available = (available_data_types & 0x0100) != 0; + s->far.far_parms.i_char_dyn_cs_available = (available_data_types & 0x0080) != 0; + + span_log(&s->logging, SPAN_LOG_FLOW, " Modulation %s\n", v150_1_modulation_to_str(s->far.far_parms.selmod)); + span_log(&s->logging, SPAN_LOG_FLOW, " Compression direction %s\n", v150_1_compression_direction_to_str(s->far.far_parms.selected_compression_direction)); + span_log(&s->logging, SPAN_LOG_FLOW, " Compression %s\n", v150_1_compression_to_str(s->far.far_parms.selected_compression)); + span_log(&s->logging, SPAN_LOG_FLOW, " Error correction %s\n", v150_1_error_correction_to_str(s->far.far_parms.selected_error_correction)); + span_log(&s->logging, SPAN_LOG_FLOW, " Tx data rate %d\n", s->far.far_parms.tdsr); + span_log(&s->logging, SPAN_LOG_FLOW, " Rx data rate %d\n", s->far.far_parms.rdsr); span_log(&s->logging, SPAN_LOG_FLOW, " I_RAW-CHAR available\n"); - span_log(&s->logging, SPAN_LOG_FLOW, " I_RAW-BIT %savailable\n", (s->far.parms.i_raw_bit_available) ? "" : "not "); - span_log(&s->logging, SPAN_LOG_FLOW, " I_FRAME %savailable\n", (s->far.parms.i_frame_available) ? "" : "not "); - if (s->far.parms.i_octet_without_dlci_available || s->far.parms.i_octet_without_dlci_available) + span_log(&s->logging, SPAN_LOG_FLOW, " I_RAW-BIT %savailable\n", (s->far.far_parms.i_raw_bit_available) ? "" : "not "); + span_log(&s->logging, SPAN_LOG_FLOW, " I_FRAME %savailable\n", (s->far.far_parms.i_frame_available) ? "" : "not "); + if (s->far.far_parms.i_octet_without_dlci_available || s->far.far_parms.i_octet_without_dlci_available) { - if (s->far.parms.i_octet_without_dlci_available) + if (s->far.far_parms.i_octet_without_dlci_available) span_log(&s->logging, SPAN_LOG_FLOW, " I_OCTET (no DLCI) available\n"); /*endif*/ - if (s->far.parms.i_octet_with_dlci_available) + if (s->far.far_parms.i_octet_with_dlci_available) span_log(&s->logging, SPAN_LOG_FLOW, " I_OCTET (DLCI) available\n"); /*endif*/ } @@ -3153,56 +3153,56 @@ static int v150_1_process_connect(v150_1_state_t *s, const uint8_t buf[], int le span_log(&s->logging, SPAN_LOG_FLOW, " I_OCTET not available\n"); } /*endif*/ - span_log(&s->logging, SPAN_LOG_FLOW, " I_CHAR-STAT %savailable\n", (s->far.parms.i_char_stat_available) ? "" : "not "); - span_log(&s->logging, SPAN_LOG_FLOW, " I_CHAR-DYN %savailable\n", (s->far.parms.i_char_dyn_available) ? "" : "not "); - span_log(&s->logging, SPAN_LOG_FLOW, " I_OCTET-CS %savailable\n", (s->far.parms.i_octet_cs_available) ? "" : "not "); - span_log(&s->logging, SPAN_LOG_FLOW, " I_CHAR-STAT-CS %savailable\n", (s->far.parms.i_char_stat_cs_available) ? "" : "not "); - span_log(&s->logging, SPAN_LOG_FLOW, " I_CHAR-DYN-CS %savailable\n", (s->far.parms.i_char_dyn_cs_available) ? "" : "not "); + span_log(&s->logging, SPAN_LOG_FLOW, " I_CHAR-STAT %savailable\n", (s->far.far_parms.i_char_stat_available) ? "" : "not "); + span_log(&s->logging, SPAN_LOG_FLOW, " I_CHAR-DYN %savailable\n", (s->far.far_parms.i_char_dyn_available) ? "" : "not "); + span_log(&s->logging, SPAN_LOG_FLOW, " I_OCTET-CS %savailable\n", (s->far.far_parms.i_octet_cs_available) ? "" : "not "); + span_log(&s->logging, SPAN_LOG_FLOW, " I_CHAR-STAT-CS %savailable\n", (s->far.far_parms.i_char_stat_cs_available) ? "" : "not "); + span_log(&s->logging, SPAN_LOG_FLOW, " I_CHAR-DYN-CS %savailable\n", (s->far.far_parms.i_char_dyn_cs_available) ? "" : "not "); if (len >= 15 && - (s->far.parms.selected_compression == V150_1_COMPRESSION_V42BIS || s->far.parms.selected_compression == V150_1_COMPRESSION_V44)) + (s->far.far_parms.selected_compression == V150_1_COMPRESSION_V42BIS || s->far.far_parms.selected_compression == V150_1_COMPRESSION_V44)) { /* Selected_compression should be V150_1_COMPRESSION_V42BIS or V150_1_COMPRESSION_V44 */ - s->far.parms.compression_tx_dictionary_size = get_net_unaligned_uint16(&buf[9]); - s->far.parms.compression_rx_dictionary_size = get_net_unaligned_uint16(&buf[11]); - s->far.parms.compression_tx_string_length = buf[13]; - s->far.parms.compression_rx_string_length = buf[14]; + s->far.far_parms.compression_tx_dictionary_size = get_net_unaligned_uint16(&buf[9]); + s->far.far_parms.compression_rx_dictionary_size = get_net_unaligned_uint16(&buf[11]); + s->far.far_parms.compression_tx_string_length = buf[13]; + s->far.far_parms.compression_rx_string_length = buf[14]; - span_log(&s->logging, SPAN_LOG_FLOW, " Tx dictionary size %d\n", s->far.parms.compression_tx_dictionary_size); - span_log(&s->logging, SPAN_LOG_FLOW, " Rx dictionary size %d\n", s->far.parms.compression_rx_dictionary_size); - span_log(&s->logging, SPAN_LOG_FLOW, " Tx string length %d\n", s->far.parms.compression_tx_string_length); - span_log(&s->logging, SPAN_LOG_FLOW, " Rx string length %d\n", s->far.parms.compression_rx_string_length); + span_log(&s->logging, SPAN_LOG_FLOW, " Tx dictionary size %d\n", s->far.far_parms.compression_tx_dictionary_size); + span_log(&s->logging, SPAN_LOG_FLOW, " Rx dictionary size %d\n", s->far.far_parms.compression_rx_dictionary_size); + span_log(&s->logging, SPAN_LOG_FLOW, " Tx string length %d\n", s->far.far_parms.compression_tx_string_length); + span_log(&s->logging, SPAN_LOG_FLOW, " Rx string length %d\n", s->far.far_parms.compression_rx_string_length); } else { - s->far.parms.compression_tx_dictionary_size = 0; - s->far.parms.compression_rx_dictionary_size = 0; - s->far.parms.compression_tx_string_length = 0; - s->far.parms.compression_rx_string_length = 0; + s->far.far_parms.compression_tx_dictionary_size = 0; + s->far.far_parms.compression_rx_dictionary_size = 0; + s->far.far_parms.compression_tx_string_length = 0; + s->far.far_parms.compression_rx_string_length = 0; } /*endif*/ if (len >= 19 && - s->far.parms.selected_compression == V150_1_COMPRESSION_V44) + s->far.far_parms.selected_compression == V150_1_COMPRESSION_V44) { /* Selected_compression should be V150_1_COMPRESSION_V44 */ - s->far.parms.compression_tx_history_size = get_net_unaligned_uint16(&buf[15]); - s->far.parms.compression_rx_history_size = get_net_unaligned_uint16(&buf[17]); + s->far.far_parms.compression_tx_history_size = get_net_unaligned_uint16(&buf[15]); + s->far.far_parms.compression_rx_history_size = get_net_unaligned_uint16(&buf[17]); - span_log(&s->logging, SPAN_LOG_FLOW, " Tx history size %d\n", s->far.parms.compression_tx_history_size); - span_log(&s->logging, SPAN_LOG_FLOW, " Rx history size %d\n", s->far.parms.compression_rx_history_size); + span_log(&s->logging, SPAN_LOG_FLOW, " Tx history size %d\n", s->far.far_parms.compression_tx_history_size); + span_log(&s->logging, SPAN_LOG_FLOW, " Rx history size %d\n", s->far.far_parms.compression_rx_history_size); } else { - s->far.parms.compression_tx_history_size = 0; - s->far.parms.compression_rx_history_size = 0; + s->far.far_parms.compression_tx_history_size = 0; + s->far.far_parms.compression_rx_history_size = 0; } /*endif*/ - s->far.parms.connection_state = V150_1_STATE_CONNECTED; - if (s->near.parms.connection_state >= V150_1_STATE_CONNECTED) + s->far.far_parms.connection_state = V150_1_STATE_CONNECTED; + if (s->near.near_parms.connection_state >= V150_1_STATE_CONNECTED) s->joint_connection_state = V150_1_STATE_CONNECTED; /*endif*/ status_report(s, V150_1_STATUS_REASON_CONNECTION_STATE_CONNECTED); @@ -3297,13 +3297,13 @@ static int v150_1_process_mr_event(v150_1_state_t *s, const uint8_t buf[], int l span_log(&s->logging, SPAN_LOG_FLOW, " Reason %d\n", reason); if (event == V150_1_MR_EVENT_ID_RETRAIN) { - s->far.parms.connection_state = V150_1_STATE_RETRAIN; + s->far.far_parms.connection_state = V150_1_STATE_RETRAIN; s->joint_connection_state = V150_1_STATE_RETRAIN; status_report(s, V150_1_STATUS_REASON_RATE_RETRAIN_RECEIVED); } else { - s->far.parms.connection_state = V150_1_STATE_RATE_RENEGOTIATION; + s->far.far_parms.connection_state = V150_1_STATE_RATE_RENEGOTIATION; s->joint_connection_state = V150_1_STATE_RATE_RENEGOTIATION; status_report(s, V150_1_STATUS_REASON_RATE_RENEGOTIATION_RECEIVED); } @@ -3316,28 +3316,28 @@ static int v150_1_process_mr_event(v150_1_state_t *s, const uint8_t buf[], int l return -1; } /*endif*/ - s->far.parms.selmod = (buf[3] >> 2) & 0x3F; - s->far.parms.txsen = (buf[3] & 0x02) != 0; - s->far.parms.rxsen = (buf[3] & 0x01) != 0; - s->far.parms.tdsr = get_net_unaligned_uint16(&buf[4]); - s->far.parms.rdsr = get_net_unaligned_uint16(&buf[6]); - s->far.parms.txsr = buf[8]; - s->far.parms.rxsr = buf[9]; - - span_log(&s->logging, SPAN_LOG_FLOW, " Selected modulation %s\n", v150_1_modulation_to_str(s->far.parms.selmod)); - span_log(&s->logging, SPAN_LOG_FLOW, " Tx data signalling rate %d\n", s->far.parms.tdsr); - span_log(&s->logging, SPAN_LOG_FLOW, " Rx data signalling rate %d\n", s->far.parms.rdsr); - if (s->far.parms.txsen) - span_log(&s->logging, SPAN_LOG_FLOW, " Tx symbol rate %s\n", v150_1_symbol_rate_to_str(s->far.parms.txsr)); + s->far.far_parms.selmod = (buf[3] >> 2) & 0x3F; + s->far.far_parms.txsen = (buf[3] & 0x02) != 0; + s->far.far_parms.rxsen = (buf[3] & 0x01) != 0; + s->far.far_parms.tdsr = get_net_unaligned_uint16(&buf[4]); + s->far.far_parms.rdsr = get_net_unaligned_uint16(&buf[6]); + s->far.far_parms.txsr = buf[8]; + s->far.far_parms.rxsr = buf[9]; + + span_log(&s->logging, SPAN_LOG_FLOW, " Selected modulation %s\n", v150_1_modulation_to_str(s->far.far_parms.selmod)); + span_log(&s->logging, SPAN_LOG_FLOW, " Tx data signalling rate %d\n", s->far.far_parms.tdsr); + span_log(&s->logging, SPAN_LOG_FLOW, " Rx data signalling rate %d\n", s->far.far_parms.rdsr); + if (s->far.far_parms.txsen) + span_log(&s->logging, SPAN_LOG_FLOW, " Tx symbol rate %s\n", v150_1_symbol_rate_to_str(s->far.far_parms.txsr)); /*endif*/ - if (s->far.parms.rxsen) - span_log(&s->logging, SPAN_LOG_FLOW, " Rx symbol rate %s\n", v150_1_symbol_rate_to_str(s->far.parms.rxsr)); + if (s->far.far_parms.rxsen) + span_log(&s->logging, SPAN_LOG_FLOW, " Rx symbol rate %s\n", v150_1_symbol_rate_to_str(s->far.far_parms.rxsr)); /*endif*/ /* TODO: report these parameters */ - s->far.parms.connection_state = V150_1_STATE_PHYSUP; - if (s->near.parms.connection_state >= V150_1_STATE_PHYSUP) + s->far.far_parms.connection_state = V150_1_STATE_PHYSUP; + if (s->near.near_parms.connection_state >= V150_1_STATE_PHYSUP) s->joint_connection_state = V150_1_STATE_PHYSUP; /*endif*/ status_report(s, V150_1_STATUS_REASON_CONNECTION_STATE_PHYSUP); @@ -3366,15 +3366,15 @@ static int v150_1_process_cleardown(v150_1_state_t *s, const uint8_t buf[], int } /*endif*/ - s->far.parms.cleardown_reason = buf[1]; + s->far.far_parms.cleardown_reason = buf[1]; span_log(&s->logging, SPAN_LOG_FLOW, " Reason %s\n", - v150_1_cleardown_reason_to_str(s->far.parms.cleardown_reason)); + v150_1_cleardown_reason_to_str(s->far.far_parms.cleardown_reason)); // vendor = buf[2]; // vendor_info = buf[3]; /* A cleardown moves everything back to square one. */ - s->far.parms.connection_state = V150_1_STATE_IDLE; + s->far.far_parms.connection_state = V150_1_STATE_IDLE; status_report(s, V150_1_STATUS_REASON_CONNECTION_STATE_CHANGED); return 0; } @@ -3396,41 +3396,41 @@ static int v150_1_process_prof_xchg(v150_1_state_t *s, const uint8_t buf[], int /*endif*/ /* The following have 3 way options - no, yes and unknown */ - s->far.parms.v42_lapm_supported = (buf[1] & 0xC0) == 0x40; - s->far.parms.v42_annex_a_supported = (buf[1] & 0x30) == 0x10; - s->far.parms.v44_supported = (buf[1] & 0x0C) == 0x04; - s->far.parms.v42bis_supported = (buf[1] & 0x03) == 0x01; - s->far.parms.mnp5_supported = (buf[2] & 0xC0) == 0x40; - - s->far.parms.v42bis_p0 = buf[3]; - s->far.parms.v42bis_p1 = get_net_unaligned_uint16(&buf[4]); - s->far.parms.v42bis_p2 = buf[6]; - s->far.parms.v44_c0 = buf[7]; - s->far.parms.v44_p0 = buf[8]; - s->far.parms.v44_p1t = get_net_unaligned_uint16(&buf[9]); - s->far.parms.v44_p1r = get_net_unaligned_uint16(&buf[11]); - s->far.parms.v44_p2t = buf[13]; - s->far.parms.v44_p2r = buf[14]; - s->far.parms.v44_p3t = get_net_unaligned_uint16(&buf[15]); - s->far.parms.v44_p3r = get_net_unaligned_uint16(&buf[17]); - - span_log(&s->logging, SPAN_LOG_FLOW, " V.42 LAPM %ssupported\n", (s->far.parms.v42_lapm_supported) ? "" : "not "); - span_log(&s->logging, SPAN_LOG_FLOW, " V.42 Annex A %ssupported\n", (s->far.parms.v42_annex_a_supported) ? "" : "not "); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 %ssupported\n", (s->far.parms.v44_supported) ? "" : "not "); - span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis %ssupported\n", (s->far.parms.v42bis_supported) ? "" : "not "); - span_log(&s->logging, SPAN_LOG_FLOW, " MNP5 %ssupported\n", (s->far.parms.mnp5_supported) ? "" : "not "); - - span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis P0 %d\n", s->far.parms.v42bis_p0); - span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis P1 %d\n", s->far.parms.v42bis_p1); - span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis P2 %d\n", s->far.parms.v42bis_p2); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 C0 %d\n", s->far.parms.v44_c0); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P1 %d\n", s->far.parms.v44_p0); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P1T %d\n", s->far.parms.v44_p1t); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P1R %d\n", s->far.parms.v44_p1r); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P2T %d\n", s->far.parms.v44_p2t); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P2R %d\n", s->far.parms.v44_p2r); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P3T %d\n", s->far.parms.v44_p3t); - span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P3R %d\n", s->far.parms.v44_p3r); + s->far.far_parms.v42_lapm_supported = (buf[1] & 0xC0) == 0x40; + s->far.far_parms.v42_annex_a_supported = (buf[1] & 0x30) == 0x10; + s->far.far_parms.v44_supported = (buf[1] & 0x0C) == 0x04; + s->far.far_parms.v42bis_supported = (buf[1] & 0x03) == 0x01; + s->far.far_parms.mnp5_supported = (buf[2] & 0xC0) == 0x40; + + s->far.far_parms.v42bis_p0 = buf[3]; + s->far.far_parms.v42bis_p1 = get_net_unaligned_uint16(&buf[4]); + s->far.far_parms.v42bis_p2 = buf[6]; + s->far.far_parms.v44_c0 = buf[7]; + s->far.far_parms.v44_p0 = buf[8]; + s->far.far_parms.v44_p1t = get_net_unaligned_uint16(&buf[9]); + s->far.far_parms.v44_p1r = get_net_unaligned_uint16(&buf[11]); + s->far.far_parms.v44_p2t = buf[13]; + s->far.far_parms.v44_p2r = buf[14]; + s->far.far_parms.v44_p3t = get_net_unaligned_uint16(&buf[15]); + s->far.far_parms.v44_p3r = get_net_unaligned_uint16(&buf[17]); + + span_log(&s->logging, SPAN_LOG_FLOW, " V.42 LAPM %ssupported\n", (s->far.far_parms.v42_lapm_supported) ? "" : "not "); + span_log(&s->logging, SPAN_LOG_FLOW, " V.42 Annex A %ssupported\n", (s->far.far_parms.v42_annex_a_supported) ? "" : "not "); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 %ssupported\n", (s->far.far_parms.v44_supported) ? "" : "not "); + span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis %ssupported\n", (s->far.far_parms.v42bis_supported) ? "" : "not "); + span_log(&s->logging, SPAN_LOG_FLOW, " MNP5 %ssupported\n", (s->far.far_parms.mnp5_supported) ? "" : "not "); + + span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis P0 %d\n", s->far.far_parms.v42bis_p0); + span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis P1 %d\n", s->far.far_parms.v42bis_p1); + span_log(&s->logging, SPAN_LOG_FLOW, " V.42bis P2 %d\n", s->far.far_parms.v42bis_p2); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 C0 %d\n", s->far.far_parms.v44_c0); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P1 %d\n", s->far.far_parms.v44_p0); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P1T %d\n", s->far.far_parms.v44_p1t); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P1R %d\n", s->far.far_parms.v44_p1r); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P2T %d\n", s->far.far_parms.v44_p2t); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P2R %d\n", s->far.far_parms.v44_p2r); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P3T %d\n", s->far.far_parms.v44_p3t); + span_log(&s->logging, SPAN_LOG_FLOW, " V.44 P3R %d\n", s->far.far_parms.v44_p3r); /* TODO: */ return 0; @@ -3562,7 +3562,7 @@ static int v150_1_process_i_octet(v150_1_state_t *s, const uint8_t buf[], int le return -1; } /*endif*/ - if (s->far.parms.i_octet_with_dlci_available) + if (s->far.far_parms.i_octet_with_dlci_available) { /* DLCI is one or two bytes (usually just 1). The low bit of each byte is an extension bit, allowing for a variable number of bytes. */ @@ -3579,12 +3579,12 @@ static int v150_1_process_i_octet(v150_1_state_t *s, const uint8_t buf[], int le span_log(&s->logging, SPAN_LOG_WARNING, "I_OCTET with DLCI has bad DLCI field\n"); /*endif*/ header = 3; - s->far.parms.dlci = get_net_unaligned_uint16(&buf[1]); + s->far.far_parms.dlci = get_net_unaligned_uint16(&buf[1]); } else { header = 2; - s->far.parms.dlci = buf[1]; + s->far.far_parms.dlci = buf[1]; } /*endif*/ } @@ -3620,10 +3620,10 @@ static int v150_1_process_i_char_stat(v150_1_state_t *s, const uint8_t buf[], in return -1; } /*endif*/ - if (s->far.parms.data_format_code != buf[1]) + if (s->far.far_parms.data_format_code != buf[1]) { /* Every packet in a session should have the same data format code */ - s->far.parms.data_format_code = buf[1]; + s->far.far_parms.data_format_code = buf[1]; status_report(s, V150_1_STATUS_REASON_DATA_FORMAT_CHANGED); } /*endif*/ @@ -3652,9 +3652,9 @@ static int v150_1_process_i_char_dyn(v150_1_state_t *s, const uint8_t buf[], int return -1; } /*endif*/ - if (s->far.parms.data_format_code != buf[1]) + if (s->far.far_parms.data_format_code != buf[1]) { - s->far.parms.data_format_code = buf[1]; + s->far.far_parms.data_format_code = buf[1]; status_report(s, V150_1_STATUS_REASON_DATA_FORMAT_CHANGED); } /*endif*/ @@ -3721,11 +3721,11 @@ static int v150_1_process_i_octet_cs(v150_1_state_t *s, const uint8_t buf[], int /*endif*/ character_seq_no = get_net_unaligned_uint16(&buf[1]); /* Check for a gap in the data */ - fill = (character_seq_no - s->far.parms.octet_cs_next_seq_no) & 0xFFFF; + fill = (character_seq_no - s->far.far_parms.octet_cs_next_seq_no) & 0xFFFF; if (s->rx_data_handler) s->rx_data_handler(s->rx_data_handler_user_data, &buf[3], len - 3, fill); /*endif*/ - s->far.parms.octet_cs_next_seq_no = (character_seq_no + len - 3) & 0xFFFF; + s->far.far_parms.octet_cs_next_seq_no = (character_seq_no + len - 3) & 0xFFFF; return 0; } /*- End of function --------------------------------------------------------*/ @@ -3747,20 +3747,20 @@ static int v150_1_process_i_char_stat_cs(v150_1_state_t *s, const uint8_t buf[], return -1; } /*endif*/ - if (s->far.parms.data_format_code != buf[1]) + if (s->far.far_parms.data_format_code != buf[1]) { /* Every packet in a session should have the same data format code */ - s->far.parms.data_format_code = buf[1]; + s->far.far_parms.data_format_code = buf[1]; status_report(s, V150_1_STATUS_REASON_DATA_FORMAT_CHANGED); } /*endif*/ character_seq_no = get_net_unaligned_uint16(&buf[2]); /* Check for a gap in the data */ - fill = (character_seq_no - s->far.parms.octet_cs_next_seq_no) & 0xFFFF; + fill = (character_seq_no - s->far.far_parms.octet_cs_next_seq_no) & 0xFFFF; if (s->rx_data_handler) s->rx_data_handler(s->rx_data_handler_user_data, &buf[4], len - 4, fill); /*endif*/ - s->far.parms.octet_cs_next_seq_no = (character_seq_no + len - 4) & 0xFFFF; + s->far.far_parms.octet_cs_next_seq_no = (character_seq_no + len - 4) & 0xFFFF; return 0; } /*- End of function --------------------------------------------------------*/ @@ -3782,19 +3782,19 @@ static int v150_1_process_i_char_dyn_cs(v150_1_state_t *s, const uint8_t buf[], return -1; } /*endif*/ - if (s->far.parms.data_format_code != buf[1]) + if (s->far.far_parms.data_format_code != buf[1]) { - s->far.parms.data_format_code = buf[1]; + s->far.far_parms.data_format_code = buf[1]; status_report(s, V150_1_STATUS_REASON_DATA_FORMAT_CHANGED); } /*endif*/ character_seq_no = get_net_unaligned_uint16(&buf[2]); /* Check for a gap in the data */ - fill = (character_seq_no - s->far.parms.octet_cs_next_seq_no) & 0xFFFF; + fill = (character_seq_no - s->far.far_parms.octet_cs_next_seq_no) & 0xFFFF; if (s->rx_data_handler) s->rx_data_handler(s->rx_data_handler_user_data, &buf[4], len - 4, fill); /*endif*/ - s->far.parms.octet_cs_next_seq_no = (character_seq_no + len - 4) & 0xFFFF; + s->far.far_parms.octet_cs_next_seq_no = (character_seq_no + len - 4) & 0xFFFF; return 0; } /*- End of function --------------------------------------------------------*/ @@ -3922,15 +3922,15 @@ SPAN_DECLARE(int) v150_1_set_local_busy(v150_1_state_t *s, bool busy) { bool previous_busy; - previous_busy = s->near.parms.busy; - s->near.parms.busy = busy; + previous_busy = s->near.near_parms.busy; + s->near.near_parms.busy = busy; return previous_busy; } /*- End of function --------------------------------------------------------*/ SPAN_DECLARE(bool) v150_1_get_far_busy_status(v150_1_state_t *s) { - return s->far.parms.busy; + return s->far.far_parms.busy; } /*- End of function --------------------------------------------------------*/ @@ -4026,21 +4026,21 @@ SPAN_DECLARE(int) v150_1_set_info_stream_msg_priorities(v150_1_state_t *s, int m SPAN_DECLARE(int) v150_1_set_modulation(v150_1_state_t *s, int modulation) { - s->near.parms.selmod = modulation; + s->near.near_parms.selmod = modulation; return 0; } /*- End of function --------------------------------------------------------*/ SPAN_DECLARE(int) v150_1_set_compression_direction(v150_1_state_t *s, int compression_direction) { - s->near.parms.selected_compression_direction = compression_direction; + s->near.near_parms.selected_compression_direction = compression_direction; return 0; } /*- End of function --------------------------------------------------------*/ SPAN_DECLARE(int) v150_1_set_compression(v150_1_state_t *s, int compression) { - s->near.parms.selected_compression = compression; + s->near.near_parms.selected_compression = compression; return 0; } /*- End of function --------------------------------------------------------*/ @@ -4053,50 +4053,50 @@ SPAN_DECLARE(int) v150_1_set_compression_parameters(v150_1_state_t *s, int tx_history_size, int rx_history_size) { - s->near.parms.compression_tx_dictionary_size = tx_dictionary_size; - s->near.parms.compression_rx_dictionary_size = rx_dictionary_size; - s->near.parms.compression_tx_string_length = tx_string_length; - s->near.parms.compression_rx_string_length = rx_string_length; + s->near.near_parms.compression_tx_dictionary_size = tx_dictionary_size; + s->near.near_parms.compression_rx_dictionary_size = rx_dictionary_size; + s->near.near_parms.compression_tx_string_length = tx_string_length; + s->near.near_parms.compression_rx_string_length = rx_string_length; /* These are only relevant for V.44 */ - s->near.parms.compression_tx_history_size = tx_history_size; - s->near.parms.compression_rx_history_size = rx_history_size; + s->near.near_parms.compression_tx_history_size = tx_history_size; + s->near.near_parms.compression_rx_history_size = rx_history_size; return 0; } /*- End of function --------------------------------------------------------*/ SPAN_DECLARE(int) v150_1_set_error_correction(v150_1_state_t *s, int error_correction) { - s->near.parms.selected_error_correction = error_correction; + s->near.near_parms.selected_error_correction = error_correction; return 0; } /*- End of function --------------------------------------------------------*/ SPAN_DECLARE(int) v150_1_set_tx_symbol_rate(v150_1_state_t *s, bool enable, int rate) { - s->near.parms.txsen = enable; - s->near.parms.txsr = (enable) ? rate : 0; + s->near.near_parms.txsen = enable; + s->near.near_parms.txsr = (enable) ? rate : 0; return 0; } /*- End of function --------------------------------------------------------*/ SPAN_DECLARE(int) v150_1_set_rx_symbol_rate(v150_1_state_t *s, bool enable, int rate) { - s->near.parms.rxsen = enable; - s->near.parms.rxsr = (enable) ? rate : 0; + s->near.near_parms.rxsen = enable; + s->near.near_parms.rxsr = (enable) ? rate : 0; return 0; } /*- End of function --------------------------------------------------------*/ SPAN_DECLARE(int) v150_1_set_tx_data_signalling_rate(v150_1_state_t *s, int rate) { - s->near.parms.tdsr = rate; + s->near.near_parms.tdsr = rate; return 0; } /*- End of function --------------------------------------------------------*/ SPAN_DECLARE(int) v150_1_set_rx_data_signalling_rate(v150_1_state_t *s, int rate) { - s->near.parms.rdsr = rate; + s->near.near_parms.rdsr = rate; return 0; } /*- End of function --------------------------------------------------------*/ @@ -4104,21 +4104,21 @@ SPAN_DECLARE(int) v150_1_set_rx_data_signalling_rate(v150_1_state_t *s, int rate static void set_joint_cdscselect(v150_1_state_t *s) { /* See Table 32/V.150.1 */ - if (s->near.parms.cdscselect == V150_1_CDSCSELECT_INDETERMINATE + if (s->near.near_parms.cdscselect == V150_1_CDSCSELECT_INDETERMINATE || - s->far.parms.cdscselect == V150_1_CDSCSELECT_INDETERMINATE) + s->far.far_parms.cdscselect == V150_1_CDSCSELECT_INDETERMINATE) { s->cdscselect = V150_1_CDSCSELECT_INDETERMINATE; } - else if (s->near.parms.cdscselect == V150_1_CDSCSELECT_AUDIO_RFC4733 + else if (s->near.near_parms.cdscselect == V150_1_CDSCSELECT_AUDIO_RFC4733 || - s->far.parms.cdscselect == V150_1_CDSCSELECT_AUDIO_RFC4733) + s->far.far_parms.cdscselect == V150_1_CDSCSELECT_AUDIO_RFC4733) { s->cdscselect = V150_1_CDSCSELECT_AUDIO_RFC4733; } - else if (s->near.parms.cdscselect == V150_1_CDSCSELECT_VBD_PREFERRED + else if (s->near.near_parms.cdscselect == V150_1_CDSCSELECT_VBD_PREFERRED || - s->far.parms.cdscselect == V150_1_CDSCSELECT_VBD_PREFERRED) + s->far.far_parms.cdscselect == V150_1_CDSCSELECT_VBD_PREFERRED) { s->cdscselect = V150_1_CDSCSELECT_VBD_PREFERRED; } @@ -4132,14 +4132,14 @@ static void set_joint_cdscselect(v150_1_state_t *s) SPAN_DECLARE(void) v150_1_set_near_cdscselect(v150_1_state_t *s, v150_1_cdscselect_t select) { - s->near.parms.cdscselect = select; + s->near.near_parms.cdscselect = select; set_joint_cdscselect(s); } /*- End of function --------------------------------------------------------*/ SPAN_DECLARE(void) v150_1_set_far_cdscselect(v150_1_state_t *s, v150_1_cdscselect_t select) { - s->far.parms.cdscselect = select; + s->far.far_parms.cdscselect = select; set_joint_cdscselect(s); } /*- End of function --------------------------------------------------------*/ @@ -4347,88 +4347,88 @@ SPAN_DECLARE(v150_1_state_t *) v150_1_init(v150_1_state_t *s, s->near.max_payload_bytes[SPRT_TCID_EXPEDITED_RELIABLE_SEQUENCED] = SPRT_DEFAULT_TC2_PAYLOAD_BYTES; s->near.max_payload_bytes[SPRT_TCID_UNRELIABLE_SEQUENCED] = SPRT_DEFAULT_TC3_PAYLOAD_BYTES; - s->near.parms.v42bis_p0 = 3; - s->near.parms.v42bis_p1 = 512; - s->near.parms.v42bis_p2 = 6; - s->near.parms.v44_c0 = 0; - s->near.parms.v44_p0 = 0; - s->near.parms.v44_p1t = 0; - s->near.parms.v44_p1r = 0; - s->near.parms.v44_p2t = 0; - s->near.parms.v44_p2r = 0; - s->near.parms.v44_p3t = 0; - s->near.parms.v44_p3r = 0; - - s->near.parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_CALL_FUNCTION_1] = true; - s->near.parms.jm_category_info[V150_1_JM_CATEGORY_ID_CALL_FUNCTION_1] = V150_1_JM_CALL_FUNCTION_V_SERIES; - s->near.parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_MODULATION_MODES] = true; - s->near.parms.jm_category_info[V150_1_JM_CATEGORY_ID_MODULATION_MODES] = + s->near.near_parms.v42bis_p0 = 3; + s->near.near_parms.v42bis_p1 = 512; + s->near.near_parms.v42bis_p2 = 6; + s->near.near_parms.v44_c0 = 0; + s->near.near_parms.v44_p0 = 0; + s->near.near_parms.v44_p1t = 0; + s->near.near_parms.v44_p1r = 0; + s->near.near_parms.v44_p2t = 0; + s->near.near_parms.v44_p2r = 0; + s->near.near_parms.v44_p3t = 0; + s->near.near_parms.v44_p3r = 0; + + s->near.near_parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_CALL_FUNCTION_1] = true; + s->near.near_parms.jm_category_info[V150_1_JM_CATEGORY_ID_CALL_FUNCTION_1] = V150_1_JM_CALL_FUNCTION_V_SERIES; + s->near.near_parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_MODULATION_MODES] = true; + s->near.near_parms.jm_category_info[V150_1_JM_CATEGORY_ID_MODULATION_MODES] = V150_1_JM_MODULATION_MODE_V34_AVAILABLE | V150_1_JM_MODULATION_MODE_V32_V32bis_AVAILABLE | V150_1_JM_MODULATION_MODE_V22_V22bis_AVAILABLE | V150_1_JM_MODULATION_MODE_V21_AVAILABLE; - s->near.parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_PROTOCOLS] = true; - s->near.parms.jm_category_info[V150_1_JM_CATEGORY_ID_PROTOCOLS] = V150_1_JM_PROTOCOL_V42_LAPM; - s->near.parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_PSTN_ACCESS] = true; - s->near.parms.jm_category_info[V150_1_JM_CATEGORY_ID_PSTN_ACCESS] = 0; - s->near.parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_PCM_MODEM_AVAILABILITY] = false; - s->near.parms.jm_category_info[V150_1_JM_CATEGORY_ID_PCM_MODEM_AVAILABILITY] = 0; - s->near.parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_EXTENSION] = false; - s->near.parms.jm_category_info[V150_1_JM_CATEGORY_ID_EXTENSION] = 0; - - s->near.parms.selmod = V150_1_SELMOD_NULL; - s->near.parms.selected_compression_direction = V150_1_COMPRESS_NEITHER_WAY; - s->near.parms.selected_compression = V150_1_COMPRESSION_NONE; - s->near.parms.selected_error_correction = V150_1_ERROR_CORRECTION_NONE; - s->near.parms.tdsr = 0; - s->near.parms.rdsr = 0; - s->near.parms.txsen = false; - s->near.parms.txsr = V150_1_SYMBOL_RATE_NULL; - s->near.parms.rxsen = false; - s->near.parms.rxsr = V150_1_SYMBOL_RATE_NULL; + s->near.near_parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_PROTOCOLS] = true; + s->near.near_parms.jm_category_info[V150_1_JM_CATEGORY_ID_PROTOCOLS] = V150_1_JM_PROTOCOL_V42_LAPM; + s->near.near_parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_PSTN_ACCESS] = true; + s->near.near_parms.jm_category_info[V150_1_JM_CATEGORY_ID_PSTN_ACCESS] = 0; + s->near.near_parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_PCM_MODEM_AVAILABILITY] = false; + s->near.near_parms.jm_category_info[V150_1_JM_CATEGORY_ID_PCM_MODEM_AVAILABILITY] = 0; + s->near.near_parms.jm_category_id_seen[V150_1_JM_CATEGORY_ID_EXTENSION] = false; + s->near.near_parms.jm_category_info[V150_1_JM_CATEGORY_ID_EXTENSION] = 0; + + s->near.near_parms.selmod = V150_1_SELMOD_NULL; + s->near.near_parms.selected_compression_direction = V150_1_COMPRESS_NEITHER_WAY; + s->near.near_parms.selected_compression = V150_1_COMPRESSION_NONE; + s->near.near_parms.selected_error_correction = V150_1_ERROR_CORRECTION_NONE; + s->near.near_parms.tdsr = 0; + s->near.near_parms.rdsr = 0; + s->near.near_parms.txsen = false; + s->near.near_parms.txsr = V150_1_SYMBOL_RATE_NULL; + s->near.near_parms.rxsen = false; + s->near.near_parms.rxsr = V150_1_SYMBOL_RATE_NULL; /* Set default values that suit V.42bis */ - s->near.parms.compression_tx_dictionary_size = 512; - s->near.parms.compression_rx_dictionary_size = 512; - s->near.parms.compression_tx_string_length = 6; - s->near.parms.compression_rx_string_length = 6; - s->near.parms.compression_tx_history_size = 0; - s->near.parms.compression_rx_history_size = 0; - - s->near.parms.ecp = V150_1_ERROR_CORRECTION_V42_LAPM; - s->near.parms.v42_lapm_supported = true; - s->near.parms.v42_annex_a_supported = false; /* This will never be supported, as it was removed from the V.42 spec in 2002. */ - s->near.parms.v42bis_supported = true; - s->near.parms.v44_supported = false; - s->near.parms.mnp5_supported = false; - - s->near.parms.necrxch_option = false; - s->near.parms.ecrxch_option = true; - s->near.parms.xid_profile_exchange_supported = false; - s->near.parms.asymmetric_data_types_supported = false; - - s->near.parms.i_raw_bit_supported = false; - s->near.parms.i_frame_supported = false; - s->near.parms.i_char_stat_supported = false; - s->near.parms.i_char_dyn_supported = false; - s->near.parms.i_octet_cs_supported = true; - s->near.parms.i_char_stat_cs_supported = false; - s->near.parms.i_char_dyn_cs_supported = false; + s->near.near_parms.compression_tx_dictionary_size = 512; + s->near.near_parms.compression_rx_dictionary_size = 512; + s->near.near_parms.compression_tx_string_length = 6; + s->near.near_parms.compression_rx_string_length = 6; + s->near.near_parms.compression_tx_history_size = 0; + s->near.near_parms.compression_rx_history_size = 0; + + s->near.near_parms.ecp = V150_1_ERROR_CORRECTION_V42_LAPM; + s->near.near_parms.v42_lapm_supported = true; + s->near.near_parms.v42_annex_a_supported = false; /* This will never be supported, as it was removed from the V.42 spec in 2002. */ + s->near.near_parms.v42bis_supported = true; + s->near.near_parms.v44_supported = false; + s->near.near_parms.mnp5_supported = false; + + s->near.near_parms.necrxch_option = false; + s->near.near_parms.ecrxch_option = true; + s->near.near_parms.xid_profile_exchange_supported = false; + s->near.near_parms.asymmetric_data_types_supported = false; + + s->near.near_parms.i_raw_bit_supported = false; + s->near.near_parms.i_frame_supported = false; + s->near.near_parms.i_char_stat_supported = false; + s->near.near_parms.i_char_dyn_supported = false; + s->near.near_parms.i_octet_cs_supported = true; + s->near.near_parms.i_char_stat_cs_supported = false; + s->near.near_parms.i_char_dyn_cs_supported = false; /* Set a default character format. */ - s->near.parms.data_format_code = (V150_1_DATA_BITS_7 << 6) + s->near.near_parms.data_format_code = (V150_1_DATA_BITS_7 << 6) | (V150_1_PARITY_EVEN << 3) | V150_1_STOP_BITS_1; - s->far.parms.data_format_code = -1; + s->far.far_parms.data_format_code = -1; s->remote_media_state = V150_1_MEDIA_STATE_INITIAL_AUDIO; s->local_media_state = V150_1_MEDIA_STATE_INITIAL_AUDIO; s->call_discrimination_timeout = V150_1_CALL_DISCRIMINATION_DEFAULT_TIMEOUT; - s->near.parms.sprt_subsession_id = 0; - s->near.parms.sprt_payload_type = sprt_tx_payload_type; - s->far.parms.sprt_payload_type = sprt_rx_payload_type; + s->near.near_parms.sprt_subsession_id = 0; + s->near.near_parms.sprt_payload_type = sprt_tx_payload_type; + s->far.far_parms.sprt_payload_type = sprt_rx_payload_type; s->rx_data_handler = rx_data_handler; s->rx_data_handler_user_data = rx_data_handler_user_data; @@ -4443,9 +4443,9 @@ SPAN_DECLARE(v150_1_state_t *) v150_1_init(v150_1_state_t *s, sse_tx_packet_user_data); sprt_init(&s->sprt, - s->near.parms.sprt_subsession_id, - s->near.parms.sprt_payload_type, - s->far.parms.sprt_payload_type, + s->near.near_parms.sprt_subsession_id, + s->near.near_parms.sprt_payload_type, + s->far.far_parms.sprt_payload_type, NULL /* Use default params */, sprt_tx_packet_handler, sprt_tx_packet_handler_user_data,