uint8_t num_dchan;
sngisdn_dchan_data_t dchans[MAX_L1_LINKS+1];
sngisdn_span_data_t *spans[MAX_L1_LINKS+1]; /* spans are indexed by link_id */
+
+#ifdef SANGOMA_ISDN_CHAN_ID_INVERT_BIT
+ /* Since this is a global configuration, place it here instead of sngisdn_span_data_t */
+ uint8_t chan_id_invert_extend_bit;
+#endif
}ftdm_sngisdn_data_t;
typedef struct ftdm2trillium
if (parse_early_media(val, span) != FTDM_SUCCESS) {
return FTDM_FAIL;
}
+ } else if (!strcasecmp(var, "chan-id-invert-extend-bit")) {
+#ifdef SANGOMA_ISDN_CHAN_ID_INVERT_BIT
+ parse_yesno(var, val, &g_sngisdn_data.chan_id_invert_extend_bit);
+#else
+ ftdm_log(FTDM_LOG_WARNING, "chan-id-invert-extend-bit is not supported in your version of libsng_isdn\n");
+#endif
} else {
ftdm_log(FTDM_LOG_WARNING, "Ignoring unknown parameter %s\n", ftdm_parameters[paramindex].var);
}
cfg.t.cfg.s.inDLSAP.tCbCfg = TRUE;
cfg.t.cfg.s.inDLSAP.tCbId = signal_data->cc_id;
-
+
if (signal_data->facility == SNGISDN_OPT_TRUE) {
cfg.t.cfg.s.inDLSAP.facilityHandling = IN_FACILITY_STANDRD;
} else {
}
cfg.t.cfg.s.inDLSAP.useSubAdr = 0; /* call routing on subaddress */
+#ifdef SANGOMA_ISDN_CHAN_ID_INVERT_BIT
+ if (signal_data->switchtype == SNGISDN_SWITCH_DMS100 &&
+ g_sngisdn_data.chan_id_invert_extend_bit == SNGISDN_OPT_TRUE) {
+ /* Since this feature is not standard, we modified Trillium to check
+ the useSubAdr field and remove the extended bit if this is set, this
+ is a global configuration and once set, applies to all spans configured
+ as DMS 100 */
+ cfg.t.cfg.s.inDLSAP.useSubAdr = PRSNT_NODEF;
+ }
+#endif
cfg.t.cfg.s.inDLSAP.adrPref = 0; /* use of prefix for international calls */
cfg.t.cfg.s.inDLSAP.nmbPrefDig = 0; /* number of digits used for prefix */
for (i = 0; i < IN_MAXPREFDIG; i++)