lists.osmocom.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

gerrit-log

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
gerrit-log@lists.osmocom.org

October 2023

  • 1 participants
  • 1843 discussions
[S] Change in osmocom-bb[master]: mobile: fix mncc_get_bearer(): return -1 straightaway
by fixeria 18 Oct '23

18 Oct '23
fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmocom-bb/+/34809?usp=email ) Change subject: mobile: fix mncc_get_bearer(): return -1 straightaway ...................................................................... mobile: fix mncc_get_bearer(): return -1 straightaway Even though the function works as expected and *can* return -1, which is first casted to unsigned and then back to signed, let's make the code less confusing by returning -1 straightaway. Change-Id: I3206fcfa9ab4cac85a1f0f2a4de3250b25f9058f Related: OS#4396 --- M src/host/layer23/src/mobile/mnccms.c 1 file changed, 20 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/09/34809/1 diff --git a/src/host/layer23/src/mobile/mnccms.c b/src/host/layer23/src/mobile/mnccms.c index b173946..be43afa 100644 --- a/src/host/layer23/src/mobile/mnccms.c +++ b/src/host/layer23/src/mobile/mnccms.c @@ -90,7 +90,7 @@ LOGP(DMNCC, LOGL_INFO, " net suggests full rate v3\n"); else { LOGP(DMNCC, LOGL_INFO, " full rate v3 not supported\n"); - speech_ver = -1; + return -1; } break; case GSM48_BCAP_SV_EFR: @@ -98,7 +98,7 @@ LOGP(DMNCC, LOGL_INFO, " net suggests full rate v2\n"); else { LOGP(DMNCC, LOGL_INFO, " full rate v2 not supported\n"); - speech_ver = -1; + return -1; } break; case GSM48_BCAP_SV_FR: /* mandatory */ @@ -106,7 +106,7 @@ LOGP(DMNCC, LOGL_INFO, " net suggests full rate v1\n"); else { LOGP(DMNCC, LOGL_INFO, " full rate v1 not supported\n"); - speech_ver = -1; + return -1; } break; case GSM48_BCAP_SV_AMR_H: @@ -114,7 +114,7 @@ LOGP(DMNCC, LOGL_INFO, " net suggests half rate v3\n"); else { LOGP(DMNCC, LOGL_INFO, " half rate v3 not supported\n"); - speech_ver = -1; + return -1; } break; case GSM48_BCAP_SV_HR: @@ -122,13 +122,13 @@ LOGP(DMNCC, LOGL_INFO, " net suggests half rate v1\n"); else { LOGP(DMNCC, LOGL_INFO, " half rate v1 not supported\n"); - speech_ver = -1; + return -1; } break; default: LOGP(DMNCC, LOGL_INFO, " net suggests unknown speech version " "%d\n", speech_ver); - speech_ver = -1; + return -1; } return speech_ver; -- To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/34809?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I3206fcfa9ab4cac85a1f0f2a4de3250b25f9058f Gerrit-Change-Number: 34809 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[M] Change in osmocom-bb[master]: mobile: mnccms: use constants from libosmogsm (gsm_04_08.h)
by fixeria 18 Oct '23

18 Oct '23
fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmocom-bb/+/34807?usp=email ) Change subject: mobile: mnccms: use constants from libosmogsm (gsm_04_08.h) ...................................................................... mobile: mnccms: use constants from libosmogsm (gsm_04_08.h) Change-Id: I5ce59db39ad865620aaed2d778bc3710cf37bc3b Related: OS#4396 --- M src/host/layer23/src/mobile/mnccms.c 1 file changed, 37 insertions(+), 24 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/07/34807/1 diff --git a/src/host/layer23/src/mobile/mnccms.c b/src/host/layer23/src/mobile/mnccms.c index a068ee9..c20dd7a 100644 --- a/src/host/layer23/src/mobile/mnccms.c +++ b/src/host/layer23/src/mobile/mnccms.c @@ -22,6 +22,7 @@ #include <stdlib.h> #include <osmocom/core/talloc.h> +#include <osmocom/gsm/protocol/gsm_04_08.h> #include <osmocom/bb/common/logging.h> #include <osmocom/bb/common/osmocom_data.h> @@ -84,7 +85,7 @@ static int8_t mncc_get_bearer(struct gsm_settings *set, uint8_t speech_ver) { switch (speech_ver) { - case 4: + case GSM48_BCAP_SV_AMR_F: if (set->full_v3) LOGP(DMNCC, LOGL_INFO, " net suggests full rate v3\n"); else { @@ -92,7 +93,7 @@ speech_ver = -1; } break; - case 2: + case GSM48_BCAP_SV_EFR: if (set->full_v2) LOGP(DMNCC, LOGL_INFO, " net suggests full rate v2\n"); else { @@ -100,7 +101,7 @@ speech_ver = -1; } break; - case 0: /* mandatory */ + case GSM48_BCAP_SV_FR: /* mandatory */ if (set->full_v1) LOGP(DMNCC, LOGL_INFO, " net suggests full rate v1\n"); else { @@ -108,7 +109,7 @@ speech_ver = -1; } break; - case 5: + case GSM48_BCAP_SV_AMR_H: if (set->half_v3) LOGP(DMNCC, LOGL_INFO, " net suggests half rate v3\n"); else { @@ -116,7 +117,7 @@ speech_ver = -1; } break; - case 1: + case GSM48_BCAP_SV_HR: if (set->half_v1) LOGP(DMNCC, LOGL_INFO, " net suggests half rate v1\n"); else { @@ -140,13 +141,13 @@ int i = 0; mncc->fields |= MNCC_F_BEARER_CAP; - mncc->bearer_cap.coding = 0; + mncc->bearer_cap.coding = GSM48_BCAP_CODING_GSM_STD; if (set->ch_cap == GSM_CAP_SDCCH_TCHF_TCHH && (set->half_v1 || set->half_v3)) { - mncc->bearer_cap.radio = 3; + mncc->bearer_cap.radio = GSM48_BCAP_RRQ_DUAL_FR; LOGP(DMNCC, LOGL_INFO, " support TCH/H also\n"); } else { - mncc->bearer_cap.radio = 1; + mncc->bearer_cap.radio = GSM48_BCAP_RRQ_FR_ONLY; LOGP(DMNCC, LOGL_INFO, " support TCH/F only\n"); } mncc->bearer_cap.speech_ctm = 0; @@ -154,41 +155,41 @@ if (speech_ver < 0) { /* if half rate is supported and preferred */ if (set->half_v3 && set->half && set->half_prefer) { - mncc->bearer_cap.speech_ver[i++] = 5; + mncc->bearer_cap.speech_ver[i++] = GSM48_BCAP_SV_AMR_H; LOGP(DMNCC, LOGL_INFO, " support half rate v3\n"); } if (set->half_v1 && set->half && set->half_prefer) { - mncc->bearer_cap.speech_ver[i++] = 1; + mncc->bearer_cap.speech_ver[i++] = GSM48_BCAP_SV_HR; LOGP(DMNCC, LOGL_INFO, " support half rate v1\n"); } /* if full rate is supported */ if (set->full_v3) { - mncc->bearer_cap.speech_ver[i++] = 4; + mncc->bearer_cap.speech_ver[i++] = GSM48_BCAP_SV_AMR_F; LOGP(DMNCC, LOGL_INFO, " support full rate v3\n"); } if (set->full_v2) { - mncc->bearer_cap.speech_ver[i++] = 2; + mncc->bearer_cap.speech_ver[i++] = GSM48_BCAP_SV_EFR; LOGP(DMNCC, LOGL_INFO, " support full rate v2\n"); } if (set->full_v1) { /* mandatory, so it's always true */ - mncc->bearer_cap.speech_ver[i++] = 0; + mncc->bearer_cap.speech_ver[i++] = GSM48_BCAP_SV_FR; LOGP(DMNCC, LOGL_INFO, " support full rate v1\n"); } /* if half rate is supported and not preferred */ if (set->half_v3 && set->half && !set->half_prefer) { - mncc->bearer_cap.speech_ver[i++] = 5; + mncc->bearer_cap.speech_ver[i++] = GSM48_BCAP_SV_AMR_H; LOGP(DMNCC, LOGL_INFO, " support half rate v3\n"); } if (set->half_v1 && set->half && !set->half_prefer) { - mncc->bearer_cap.speech_ver[i++] = 1; + mncc->bearer_cap.speech_ver[i++] = GSM48_BCAP_SV_HR; LOGP(DMNCC, LOGL_INFO, " support half rate v1\n"); } /* if specific speech_ver is given (it must be supported) */ } else mncc->bearer_cap.speech_ver[i++] = speech_ver; mncc->bearer_cap.speech_ver[i] = -1; /* end of list */ - mncc->bearer_cap.transfer = 0; - mncc->bearer_cap.mode = 0; + mncc->bearer_cap.transfer = GSM48_BCAP_ITCAP_SPEECH; + mncc->bearer_cap.mode = GSM48_BCAP_TMOD_CIRCUIT; } /* @@ -401,19 +402,21 @@ int i; for (i = 0; data->bearer_cap.speech_ver[i] >= 0; i++) { - - temp = mncc_get_bearer(set, - data->bearer_cap.speech_ver[i]); - if (temp < 0) - continue; - if (temp == 5 || temp == 1) { /* half */ + temp = mncc_get_bearer(set, data->bearer_cap.speech_ver[i]); + switch (temp) { + case GSM48_BCAP_SV_AMR_H: + case GSM48_BCAP_SV_HR: /* only the first half rate */ if (speech_ver_half < 0) speech_ver_half = temp; - } else { + break; + default: + if (temp < 0) + continue; /* only the first full rate */ if (speech_ver < 0) speech_ver = temp; + break; } } /* half and full given */ -- To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/34807?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I5ce59db39ad865620aaed2d778bc3710cf37bc3b Gerrit-Change-Number: 34807 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[M] Change in osmocom-bb[master]: mobile: improve handling of Bearer Capability IE for MT calls
by fixeria 18 Oct '23

18 Oct '23
fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmocom-bb/+/34810?usp=email ) Change subject: mobile: improve handling of Bearer Capability IE for MT calls ...................................................................... mobile: improve handling of Bearer Capability IE for MT calls This patch prepares for adding MT data call support: * Move handling of the Bearer Capability IE into a function. * Check transfer mode and coding standard in the received BCap. Change-Id: I3a5cac8c35ba6b7bdc5fcb077690b32848747756 Related: OS#4396 --- M src/host/layer23/src/mobile/mnccms.c 1 file changed, 133 insertions(+), 58 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/10/34810/1 diff --git a/src/host/layer23/src/mobile/mnccms.c b/src/host/layer23/src/mobile/mnccms.c index be43afa..d23fbb7 100644 --- a/src/host/layer23/src/mobile/mnccms.c +++ b/src/host/layer23/src/mobile/mnccms.c @@ -192,6 +192,119 @@ mncc->bearer_cap.mode = GSM48_BCAP_TMOD_CIRCUIT; } +/* Check the given Bearer Capability, select first supported speech codec version. + * The choice between half-rate and full-rate is made based on current settings. + * Return a selected codec or -1 if no speech codec was selected. */ +static int mncc_handle_bcap_speech(const struct gsm_mncc_bearer_cap *bcap, + const struct gsm_settings *set) +{ + int speech_ver_half = -1; + int speech_ver = -1; + + for (unsigned int i = 0; bcap->speech_ver[i] >= 0; i++) { + int temp = mncc_get_bearer(set, bcap->speech_ver[i]); + switch (temp) { + case GSM48_BCAP_SV_AMR_H: + case GSM48_BCAP_SV_HR: + /* only the first half rate */ + if (speech_ver_half < 0) + speech_ver_half = temp; + break; + default: + if (temp < 0) + continue; + /* only the first full rate */ + if (speech_ver < 0) + speech_ver = temp; + break; + } + } + + /* half and full given */ + if (speech_ver_half >= 0 && speech_ver >= 0) { + if (set->half_prefer) { + LOGP(DMNCC, LOGL_INFO, " both supported" + " codec rates are given, using " + "preferred half rate\n"); + speech_ver = speech_ver_half; + } else { + LOGP(DMNCC, LOGL_INFO, " both supported" + " codec rates are given, using " + "preferred full rate\n"); + } + } else if (speech_ver_half < 0 && speech_ver < 0) { + LOGP(DMNCC, LOGL_INFO, " no supported codec " + "rate is given\n"); + /* only half rate is given, use it */ + } else if (speech_ver_half >= 0) { + LOGP(DMNCC, LOGL_INFO, " only supported half " + "rate codec is given, using it\n"); + speech_ver = speech_ver_half; + /* only full rate is given, use it */ + } else { + LOGP(DMNCC, LOGL_INFO, " only supported full " + "rate codec is given, using it\n"); + } + + return speech_ver; +} + +static int mncc_handle_bcap(struct gsm_mncc *mncc_out, /* CC Call Confirmed */ + const struct gsm_mncc *mncc_in, /* CC Setup */ + const struct gsm_settings *set) +{ + const struct gsm_mncc_bearer_cap *bcap = &mncc_in->bearer_cap; + + /* 3GPP TS 24.008, section 9.3.2.2 defines several cases in which the + * Bearer Capability 1 IE is to be included, provided that at least + * one of these conditions is met. */ + + /* if the Bearer Capability 1 IE is not present */ + if (~mncc_in->fields & MNCC_F_BEARER_CAP) { + /* ... include our own Bearer Capability, assuming a speech call */ + mncc_set_bearer(mncc_out, set, -1); + return 0; + } + + if (bcap->mode != GSM48_BCAP_TMOD_CIRCUIT) { + LOGP(DMNCC, LOGL_ERROR, + "%s(): Transfer mode 0x%02x is not supported\n", + __func__, bcap->mode); + return -ENOTSUP; + } + if (bcap->coding != GSM48_BCAP_CODING_GSM_STD) { + LOGP(DMNCC, LOGL_ERROR, + "%s(): Coding standard 0x%02x is not supported\n", + __func__, bcap->coding); + return -ENOTSUP; + } + + switch (bcap->transfer) { + case GSM48_BCAP_ITCAP_SPEECH: + { + int speech_ver = mncc_handle_bcap_speech(bcap, set); + /* include bearer cap, if not given in setup (see above) + * or if multiple codecs are given + * or if not only full rate + * or if given codec is unimplemented + */ + if (speech_ver < 0) + mncc_set_bearer(mncc_out, set, -1); + else if (bcap->speech_ver[1] >= 0 || speech_ver != 0) + mncc_set_bearer(mncc_out, set, speech_ver); + break; + } + case GSM48_BCAP_ITCAP_UNR_DIG_INF: + default: + LOGP(DMNCC, LOGL_ERROR, + "%s(): Information transfer capability 0x%02x is not supported\n", + __func__, bcap->transfer); + return -ENOTSUP; + } + + return 0; +} + /* * MNCCms dummy application */ @@ -264,7 +377,6 @@ struct gsm_call *call = get_call_ref(data->callref); struct gsm_mncc mncc; uint8_t cause; - int8_t speech_ver = -1, speech_ver_half = -1, temp; int first_call = 0; /* call does not exist */ @@ -397,53 +509,6 @@ cause = GSM48_CC_CAUSE_USER_BUSY; goto release; } - /* select first supported speech_ver */ - if ((data->fields & MNCC_F_BEARER_CAP)) { - int i; - - for (i = 0; data->bearer_cap.speech_ver[i] >= 0; i++) { - temp = mncc_get_bearer(set, data->bearer_cap.speech_ver[i]); - switch (temp) { - case GSM48_BCAP_SV_AMR_H: - case GSM48_BCAP_SV_HR: - /* only the first half rate */ - if (speech_ver_half < 0) - speech_ver_half = temp; - break; - default: - if (temp < 0) - continue; - /* only the first full rate */ - if (speech_ver < 0) - speech_ver = temp; - break; - } - } - /* half and full given */ - if (speech_ver_half >= 0 && speech_ver >= 0) { - if (set->half_prefer) { - LOGP(DMNCC, LOGL_INFO, " both supported" - " codec rates are given, using " - "preferred half rate\n"); - speech_ver = speech_ver_half; - } else - LOGP(DMNCC, LOGL_INFO, " both supported" - " codec rates are given, using " - "preferred full rate\n"); - } else if (speech_ver_half < 0 && speech_ver < 0) { - LOGP(DMNCC, LOGL_INFO, " no supported codec " - "rate is given\n"); - /* only half rate is given, use it */ - } else if (speech_ver_half >= 0) { - LOGP(DMNCC, LOGL_INFO, " only supported half " - "rate codec is given, using it\n"); - speech_ver = speech_ver_half; - /* only full rate is given, use it */ - } else { - LOGP(DMNCC, LOGL_INFO, " only supported full " - "rate codec is given, using it\n"); - } - } /* presentation allowed if present == 0 */ if (data->calling.present || !data->calling.number[0]) l23_vty_ms_notify(ms, "Incoming call (anonymous)\n"); @@ -460,16 +525,11 @@ data->calling.number, call->callref); memset(&mncc, 0, sizeof(struct gsm_mncc)); mncc.callref = call->callref; - /* only include bearer cap, if not given in setup - * or if multiple codecs are given - * or if not only full rate - * or if given codec is unimplemented - */ - if (!(data->fields & MNCC_F_BEARER_CAP) || speech_ver < 0) - mncc_set_bearer(&mncc, set, -1); - else if (data->bearer_cap.speech_ver[1] >= 0 - || speech_ver != 0) - mncc_set_bearer(&mncc, set, speech_ver); + /* Bearer capability (optional) */ + if (mncc_handle_bcap(&mncc, data, &ms->settings) != 0) { + cause = GSM48_CC_CAUSE_INCOMPAT_DEST; + goto release; + } /* CC capabilities (optional) */ if (ms->settings.cc_dtmf) { mncc.fields |= MNCC_F_CCCAP; -- To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/34810?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I3a5cac8c35ba6b7bdc5fcb077690b32848747756 Gerrit-Change-Number: 34810 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[M] Change in osmocom-bb[master]: mobile: vty: rework support enable/disable commands
by fixeria 18 Oct '23

18 Oct '23
fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmocom-bb/+/34811?usp=email ) Change subject: mobile: vty: rework support enable/disable commands ...................................................................... mobile: vty: rework support enable/disable commands Change-Id: Ibfef31f6dd7694dad535ad07fdf47bd32571b7b2 Related: OS#4396 --- M src/host/layer23/src/mobile/vty_interface.c 1 file changed, 108 insertions(+), 130 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/11/34811/1 diff --git a/src/host/layer23/src/mobile/vty_interface.c b/src/host/layer23/src/mobile/vty_interface.c index 28f8a1b..1766071 100644 --- a/src/host/layer23/src/mobile/vty_interface.c +++ b/src/host/layer23/src/mobile/vty_interface.c @@ -2011,8 +2011,10 @@ return CMD_SUCCESS; } -#define SUP_EN(cfg, cfg_cmd, item, cmd, desc, restart) \ -DEFUN(cfg, cfg_cmd, cmd, "Enable " desc "support") \ +#define SUP_EN(item, cmd, desc, restart) \ +DEFUN(cfg_ms_sup_en_##item, \ + cfg_ms_sup_en_##item##_cmd, \ + cmd, "Enable " desc "support") \ { \ struct osmocom_ms *ms = vty->index; \ struct gsm_settings *set = &ms->settings; \ @@ -2029,8 +2031,10 @@ return CMD_SUCCESS; \ } -#define SUP_DI(cfg, cfg_cmd, item, cmd, desc, restart) \ -DEFUN(cfg, cfg_cmd, "no " cmd, NO_STR "Disable " desc " support") \ +#define SUP_DI(item, cmd, desc, restart) \ +DEFUN(cfg_ms_sup_di_##item, \ + cfg_ms_sup_di_##item##_cmd, \ + "no " cmd, NO_STR "Disable " desc " support") \ { \ struct osmocom_ms *ms = vty->index; \ struct gsm_settings *set = &ms->settings; \ @@ -2047,8 +2051,15 @@ return CMD_SUCCESS; \ } -#define SET_EN(cfg, cfg_cmd, item, cmd, desc, restart) \ -DEFUN(cfg, cfg_cmd, cmd, "Enable " desc "support") \ +#define SUP_EN_DI(item, cmd, desc, restart) \ + SUP_EN(item, cmd, desc, restart); \ + SUP_DI(item, cmd, desc, restart) + + +#define SET_EN(item, cmd, desc, restart) \ +DEFUN(cfg_ms_set_en_##item, \ + cfg_ms_set_en_##item##_cmd, \ + cmd, "Enable " desc "support") \ { \ struct osmocom_ms *ms = vty->index; \ struct gsm_settings *set = &ms->settings; \ @@ -2058,8 +2069,10 @@ return CMD_SUCCESS; \ } -#define SET_DI(cfg, cfg_cmd, item, cmd, desc, restart) \ -DEFUN(cfg, cfg_cmd, "no " cmd, NO_STR "Disable " desc " support") \ +#define SET_DI(item, cmd, desc, restart) \ +DEFUN(cfg_ms_set_di_##item, \ + cfg_ms_set_di_##item##_cmd, \ + "no " cmd, NO_STR "Disable " desc " support") \ { \ struct osmocom_ms *ms = vty->index; \ struct gsm_settings *set = &ms->settings; \ @@ -2069,52 +2082,28 @@ return CMD_SUCCESS; \ } -SET_EN(cfg_ms_sup_dtmf, cfg_ms_sup_dtmf_cmd, cc_dtmf, "dtmf", "DTMF", 0); -SET_DI(cfg_ms_sup_no_dtmf, cfg_ms_sup_no_dtmf_cmd, cc_dtmf, "dtmf", "DTMF", 0); -SUP_EN(cfg_ms_sup_sms, cfg_ms_sup_sms_cmd, sms_ptp, "sms", "SMS", 0); -SUP_DI(cfg_ms_sup_no_sms, cfg_ms_sup_no_sms_cmd, sms_ptp, "sms", "SMS", 0); -SUP_EN(cfg_ms_sup_a5_1, cfg_ms_sup_a5_1_cmd, a5_1, "a5/1", "A5/1", 0); -SUP_DI(cfg_ms_sup_no_a5_1, cfg_ms_sup_no_a5_1_cmd, a5_1, "a5/1", "A5/1", 0); -SUP_EN(cfg_ms_sup_a5_2, cfg_ms_sup_a5_2_cmd, a5_2, "a5/2", "A5/2", 0); -SUP_DI(cfg_ms_sup_no_a5_2, cfg_ms_sup_no_a5_2_cmd, a5_2, "a5/2", "A5/2", 0); -SUP_EN(cfg_ms_sup_a5_3, cfg_ms_sup_a5_3_cmd, a5_3, "a5/3", "A5/3", 0); -SUP_DI(cfg_ms_sup_no_a5_3, cfg_ms_sup_no_a5_3_cmd, a5_3, "a5/3", "A5/3", 0); -SUP_EN(cfg_ms_sup_a5_4, cfg_ms_sup_a5_4_cmd, a5_4, "a5/4", "A5/4", 0); -SUP_DI(cfg_ms_sup_no_a5_4, cfg_ms_sup_no_a5_4_cmd, a5_4, "a5/4", "A5/4", 0); -SUP_EN(cfg_ms_sup_a5_5, cfg_ms_sup_a5_5_cmd, a5_5, "a5/5", "A5/5", 0); -SUP_DI(cfg_ms_sup_no_a5_5, cfg_ms_sup_no_a5_5_cmd, a5_5, "a5/5", "A5/5", 0); -SUP_EN(cfg_ms_sup_a5_6, cfg_ms_sup_a5_6_cmd, a5_6, "a5/6", "A5/6", 0); -SUP_DI(cfg_ms_sup_no_a5_6, cfg_ms_sup_no_a5_6_cmd, a5_6, "a5/6", "A5/6", 0); -SUP_EN(cfg_ms_sup_a5_7, cfg_ms_sup_a5_7_cmd, a5_7, "a5/7", "A5/7", 0); -SUP_DI(cfg_ms_sup_no_a5_7, cfg_ms_sup_no_a5_7_cmd, a5_7, "a5/7", "A5/7", 0); -SUP_EN(cfg_ms_sup_p_gsm, cfg_ms_sup_p_gsm_cmd, p_gsm, "p-gsm", "P-GSM (900)", - 1); -SUP_DI(cfg_ms_sup_no_p_gsm, cfg_ms_sup_no_p_gsm_cmd, p_gsm, "p-gsm", - "P-GSM (900)", 1); -SUP_EN(cfg_ms_sup_e_gsm, cfg_ms_sup_e_gsm_cmd, e_gsm, "e-gsm", "E-GSM (850)", - 1); -SUP_DI(cfg_ms_sup_no_e_gsm, cfg_ms_sup_no_e_gsm_cmd, e_gsm, "e-gsm", - "E-GSM (850)", 1); -SUP_EN(cfg_ms_sup_r_gsm, cfg_ms_sup_r_gsm_cmd, r_gsm, "r-gsm", "R-GSM (850)", - 1); -SUP_DI(cfg_ms_sup_no_r_gsm, cfg_ms_sup_no_r_gsm_cmd, r_gsm, "r-gsm", - "R-GSM (850)", 1); -SUP_EN(cfg_ms_sup_dcs, cfg_ms_sup_dcs_cmd, dcs, "dcs", "DCS (1800)", 1); -SUP_DI(cfg_ms_sup_no_dcs, cfg_ms_sup_no_dcs_cmd, dcs, "dcs", "DCS (1800)", 1); -SUP_EN(cfg_ms_sup_gsm_850, cfg_ms_sup_gsm_850_cmd, gsm_850, "gsm-850", - "GSM 850", 1); -SUP_DI(cfg_ms_sup_no_gsm_850, cfg_ms_sup_no_gsm_850_cmd, gsm_850, "gsm-850", - "GSM 850", 1); -SUP_EN(cfg_ms_sup_pcs, cfg_ms_sup_pcs_cmd, pcs, "pcs", "PCS (1900)", 1); -SUP_DI(cfg_ms_sup_no_pcs, cfg_ms_sup_no_pcs_cmd, pcs, "pcs", "PCS (1900)", 1); -SUP_EN(cfg_ms_sup_gsm_480, cfg_ms_sup_gsm_480_cmd, gsm_480, "gsm-480", - "GSM 480", 1); -SUP_DI(cfg_ms_sup_no_gsm_480, cfg_ms_sup_no_gsm_480_cmd, gsm_480, "gsm-480", - "GSM 480", 1); -SUP_EN(cfg_ms_sup_gsm_450, cfg_ms_sup_gsm_450_cmd, gsm_450, "gsm-450", - "GSM 450", 1); -SUP_DI(cfg_ms_sup_no_gsm_450, cfg_ms_sup_no_gsm_450_cmd, gsm_450, "gsm-450", - "GSM 450", 1); +#define SET_EN_DI(item, cmd, desc, restart) \ + SET_EN(item, cmd, desc, restart); \ + SET_DI(item, cmd, desc, restart) + + +SET_EN_DI(cc_dtmf, "dtmf", "DTMF", 0); +SUP_EN_DI(sms_ptp, "sms", "SMS", 0); +SUP_EN_DI(a5_1, "a5/1", "A5/1", 0); +SUP_EN_DI(a5_2, "a5/2", "A5/2", 0); +SUP_EN_DI(a5_3, "a5/3", "A5/3", 0); +SUP_EN_DI(a5_4, "a5/4", "A5/4", 0); +SUP_EN_DI(a5_5, "a5/5", "A5/5", 0); +SUP_EN_DI(a5_6, "a5/6", "A5/6", 0); +SUP_EN_DI(a5_7, "a5/7", "A5/7", 0); +SUP_EN_DI(p_gsm, "p-gsm", "P-GSM (900)", 1); +SUP_EN_DI(e_gsm, "e-gsm", "E-GSM (850)", 1); +SUP_EN_DI(r_gsm, "r-gsm", "R-GSM (850)", 1); +SUP_EN_DI(dcs, "dcs", "DCS (1800)", 1); +SUP_EN_DI(gsm_850, "gsm-850", "GSM 850", 1); +SUP_EN_DI(pcs, "pcs", "PCS (1900)", 1); +SUP_EN_DI(gsm_480, "gsm-480", "GSM 480", 1); +SUP_EN_DI(gsm_450, "gsm-450", "GSM 450", 1); DEFUN(cfg_ms_sup_class_900, cfg_ms_sup_class_900_cmd, "class-900 (1|2|3|4|5)", "Select power class for GSM 900\n" @@ -2253,26 +2242,11 @@ return CMD_SUCCESS; } -SUP_EN(cfg_ms_sup_full_v1, cfg_ms_sup_full_v1_cmd, full_v1, "full-speech-v1", - "Full rate speech V1", 0); -SUP_DI(cfg_ms_sup_no_full_v1, cfg_ms_sup_no_full_v1_cmd, full_v1, - "full-speech-v1", "Full rate speech V1", 0); -SUP_EN(cfg_ms_sup_full_v2, cfg_ms_sup_full_v2_cmd, full_v2, "full-speech-v2", - "Full rate speech V2 (EFR)", 0); -SUP_DI(cfg_ms_sup_no_full_v2, cfg_ms_sup_no_full_v2_cmd, full_v2, - "full-speech-v2", "Full rate speech V2 (EFR)", 0); -SUP_EN(cfg_ms_sup_full_v3, cfg_ms_sup_full_v3_cmd, full_v3, "full-speech-v3", - "Full rate speech V3 (AMR)", 0); -SUP_DI(cfg_ms_sup_no_full_v3, cfg_ms_sup_no_full_v3_cmd, full_v3, - "full-speech-v3", "Full rate speech V3 (AMR)", 0); -SUP_EN(cfg_ms_sup_half_v1, cfg_ms_sup_half_v1_cmd, half_v1, "half-speech-v1", - "Half rate speech V1", 0); -SUP_DI(cfg_ms_sup_no_half_v1, cfg_ms_sup_no_half_v1_cmd, half_v1, - "half-speech-v1", "Half rate speech V1", 0); -SUP_EN(cfg_ms_sup_half_v3, cfg_ms_sup_half_v3_cmd, half_v3, "half-speech-v3", - "Half rate speech V3 (AMR)", 0); -SUP_DI(cfg_ms_sup_no_half_v3, cfg_ms_sup_no_half_v3_cmd, half_v3, - "half-speech-v3", "Half rate speech V3 (AMR)", 0); +SUP_EN_DI(full_v1, "full-speech-v1", "Full rate speech V1", 0); +SUP_EN_DI(full_v2, "full-speech-v2", "Full rate speech V2 (EFR)", 0); +SUP_EN_DI(full_v3, "full-speech-v3", "Full rate speech V3 (AMR)", 0); +SUP_EN_DI(half_v1, "half-speech-v1", "Half rate speech V1", 0); +SUP_EN_DI(half_v3, "half-speech-v3", "Half rate speech V3 (AMR)", 0); DEFUN(cfg_ms_sup_min_rxlev, cfg_ms_sup_min_rxlev_cmd, "min-rxlev <-110--47>", "Set the minimum receive level to select a cell\n" @@ -2324,14 +2298,8 @@ return CMD_SUCCESS; } -SUP_EN(cfg_ms_sup_vgcs, cfg_ms_sup_vgcs_cmd, vgcs, "vgcs", - "Voice Group Call Service (VGCS)", 0); -SUP_DI(cfg_ms_sup_no_vgcs, cfg_ms_sup_no_vgcs_cmd, vgcs, - "vgcs", "Voice Group Call Service (VBS)", 0); -SUP_EN(cfg_ms_sup_vbs, cfg_ms_sup_vbs_cmd, vbs, "vbs", - "Voice Broadcast Service (VBS)", 0); -SUP_DI(cfg_ms_sup_no_vbs, cfg_ms_sup_no_vbs_cmd, vbs, - "vbs", "Voice Broadcast Service (VBS)", 0); +SUP_EN_DI(vgcs, "vgcs", "Voice Group Call Service (VGCS)", 0); +SUP_EN_DI(vbs, "vbs", "Voice Broadcast Service (VBS)", 0); /* per audio config */ DEFUN(cfg_ms_audio, cfg_ms_audio_cmd, "audio", @@ -2620,64 +2588,64 @@ install_element(MS_NODE, &cfg_ms_no_uplink_release_local_cmd); install_element(MS_NODE, &cfg_ms_support_cmd); install_node(&support_node, config_write_dummy); - install_element(SUPPORT_NODE, &cfg_ms_sup_dtmf_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_dtmf_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_sms_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_sms_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_a5_1_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_1_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_a5_2_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_2_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_a5_3_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_3_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_a5_4_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_4_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_a5_5_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_5_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_a5_6_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_6_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_a5_7_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_a5_7_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_p_gsm_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_p_gsm_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_e_gsm_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_e_gsm_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_r_gsm_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_r_gsm_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_dcs_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_dcs_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_gsm_850_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_gsm_850_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_pcs_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_pcs_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_gsm_480_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_gsm_480_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_gsm_450_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_gsm_450_cmd); + install_element(SUPPORT_NODE, &cfg_ms_set_en_cc_dtmf_cmd); + install_element(SUPPORT_NODE, &cfg_ms_set_di_cc_dtmf_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_sms_ptp_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_sms_ptp_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_a5_1_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_a5_1_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_a5_2_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_a5_2_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_a5_3_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_a5_3_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_a5_4_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_a5_4_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_a5_5_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_a5_5_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_a5_6_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_a5_6_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_a5_7_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_a5_7_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_p_gsm_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_p_gsm_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_e_gsm_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_e_gsm_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_r_gsm_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_r_gsm_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_dcs_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_dcs_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_gsm_850_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_gsm_850_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_pcs_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_pcs_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_gsm_480_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_gsm_480_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_gsm_450_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_gsm_450_cmd); install_element(SUPPORT_NODE, &cfg_ms_sup_class_900_cmd); install_element(SUPPORT_NODE, &cfg_ms_sup_class_dcs_cmd); install_element(SUPPORT_NODE, &cfg_ms_sup_class_850_cmd); install_element(SUPPORT_NODE, &cfg_ms_sup_class_pcs_cmd); install_element(SUPPORT_NODE, &cfg_ms_sup_class_400_cmd); install_element(SUPPORT_NODE, &cfg_ms_sup_ch_cap_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_full_v1_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_full_v1_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_full_v2_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_full_v2_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_full_v3_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_full_v3_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_half_v1_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_half_v1_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_half_v3_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_half_v3_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_full_v1_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_full_v1_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_full_v2_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_full_v2_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_full_v3_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_full_v3_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_half_v1_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_half_v1_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_half_v3_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_half_v3_cmd); install_element(SUPPORT_NODE, &cfg_ms_sup_min_rxlev_cmd); install_element(SUPPORT_NODE, &cfg_ms_sup_dsc_max_cmd); install_element(SUPPORT_NODE, &cfg_ms_sup_skip_max_per_band_cmd); install_element(SUPPORT_NODE, &cfg_ms_sup_no_skip_max_per_band_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_vgcs_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_vgcs_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_vbs_cmd); - install_element(SUPPORT_NODE, &cfg_ms_sup_no_vbs_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_vgcs_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_vgcs_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_en_vbs_cmd); + install_element(SUPPORT_NODE, &cfg_ms_sup_di_vbs_cmd); install_element(MS_NODE, &cfg_ms_script_load_run_cmd); install_element(MS_NODE, &cfg_ms_no_script_load_run_cmd); -- To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/34811?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: Ibfef31f6dd7694dad535ad07fdf47bd32571b7b2 Gerrit-Change-Number: 34811 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[S] Change in libgtpnl[master]: gitreview: new file
by osmith 18 Oct '23

18 Oct '23
osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/libgtpnl/+/34806?usp=email ) Change subject: gitreview: new file ...................................................................... gitreview: new file Change-Id: Iadc35e1a14563516c81d4c845d0d6c5c7fda668a --- A .gitreview 1 file changed, 12 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libgtpnl refs/changes/06/34806/1 diff --git a/.gitreview b/.gitreview new file mode 100644 index 0000000..512f064 --- /dev/null +++ b/.gitreview @@ -0,0 +1,3 @@ +[gerrit] +host=gerrit.osmocom.org +project=libgtpnl -- To view, visit https://gerrit.osmocom.org/c/libgtpnl/+/34806?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libgtpnl Gerrit-Branch: master Gerrit-Change-Id: Iadc35e1a14563516c81d4c845d0d6c5c7fda668a Gerrit-Change-Number: 34806 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[S] Change in ...osmo-epdg[master]: Makefile: Add shell target
by pespin 18 Oct '23

18 Oct '23
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/34805?usp=email ) Change subject: Makefile: Add shell target ...................................................................... Makefile: Add shell target Change-Id: Icec3e92c4597d73f141c6ba669e8d9d07ec2e220 --- M Makefile 1 file changed, 12 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-epdg refs/changes/05/34805/1 diff --git a/Makefile b/Makefile index 5b2196e..b2fe66f 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,9 @@ run: build ERL_FLAGS='-config config/sys.config' _build/default/bin/osmo-epdg +shell: build + rebar3 shell --config ./config/sys.config + check: rebar3 eunit -- To view, visit https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/34805?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: erlang/osmo-epdg Gerrit-Branch: master Gerrit-Change-Id: Icec3e92c4597d73f141c6ba669e8d9d07ec2e220 Gerrit-Change-Number: 34805 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[S] Change in ...osmo-epdg[master]: Makefile: pass config file to 'make run'
by pespin 18 Oct '23

18 Oct '23
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/34803?usp=email ) Change subject: Makefile: pass config file to 'make run' ...................................................................... Makefile: pass config file to 'make run' Change-Id: Icbd12d5aac363c6cdc54aac88c0e2fa619c1e01b --- M Makefile 1 file changed, 10 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-epdg refs/changes/03/34803/1 diff --git a/Makefile b/Makefile index 43e749d..5b2196e 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ rebar3 escriptize run: build - _build/default/bin/osmo-epdg + ERL_FLAGS='-config config/sys.config' _build/default/bin/osmo-epdg check: rebar3 eunit -- To view, visit https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/34803?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: erlang/osmo-epdg Gerrit-Branch: master Gerrit-Change-Id: Icbd12d5aac363c6cdc54aac88c0e2fa619c1e01b Gerrit-Change-Number: 34803 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[S] Change in ...osmo-epdg[master]: README.md: Fix path to config file
by pespin 18 Oct '23

18 Oct '23
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/34802?usp=email ) Change subject: README.md: Fix path to config file ...................................................................... README.md: Fix path to config file Change-Id: Id0f7cb0d991895da96694082ab367c30867a7bce --- M README.md 1 file changed, 10 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-epdg refs/changes/02/34802/1 diff --git a/README.md b/README.md index 6f93fed..d425efc 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ == Configuration == -$ rebar3 shell --config ./examples/sys.config +$ rebar3 shell --config ./config/sys.config ``` 1> osmo_epdg:start(). ``` -- To view, visit https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/34802?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: erlang/osmo-epdg Gerrit-Branch: master Gerrit-Change-Id: Id0f7cb0d991895da96694082ab367c30867a7bce Gerrit-Change-Number: 34802 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[M] Change in ...osmo-epdg[master]: WIP: EPDGTunnel
by pespin 18 Oct '23

18 Oct '23
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/34804?usp=email ) Change subject: WIP: EPDGTunnel ...................................................................... WIP: EPDGTunnel Change-Id: I6f00b7fce2d5fcdc484bfd45629b9141f16bc579 --- M config/sys.config M rebar.config M rebar.lock A src/epdg_gtpc_s2b.erl M src/gsup_server.erl M src/osmo_epdg.app.src M src/osmo_epdg_sup.erl 7 files changed, 207 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-epdg refs/changes/04/34804/1 diff --git a/config/sys.config b/config/sys.config index 8d751b9..1b89e86 100755 --- a/config/sys.config +++ b/config/sys.config @@ -13,7 +13,13 @@ {vendor_id, 0}, {origin_host, "epdg.localdomain"}, {origin_realm, "localdomain"}, - {context_id, "epdg@localdomain"}]}, + {context_id, "epdg@localdomain"}, + % GTPv2C Connection parameters + {gtpc_local_ip, "127.0.0.2"}, + {gtpc_local_port, 2123}, + {gtpc_remote_ip, "127.0.0.1"}, + {gtpc_remote_port, 2123} + ]}, %% =========================================== %% SASL config %% =========================================== diff --git a/rebar.config b/rebar.config index 03e0e7c..83923b8 100644 --- a/rebar.config +++ b/rebar.config @@ -4,8 +4,9 @@ {deps, [ {lager, {git, "https://github.com/erlang-lager/lager", {tag, "3.9.2"}}}, + {gtplib, "3.2.0"}, {osmo_ss7, {git, "https://gitea.osmocom.org/erlang/osmo_ss7", {ref, "9f294d3612f998860004820d1d85b4264721577b"}}}, - {osmo_gsup, {git, "https://gitea.osmocom.org/erlang/osmo_gsup", {ref, "07672d8ab1608aa9c9e50ca035521876558fcd42"}}} + {osmo_gsup, {git, "https://gitea.osmocom.org/erlang/osmo_gsup", {ref, "e23f118e6e8f7ee1247db34e4cb79e4cecdb0947"}}} ]}. {minimum_otp_vsn, "20.3"}. diff --git a/rebar.lock b/rebar.lock index 4aeafea..8f00ea6 100644 --- a/rebar.lock +++ b/rebar.lock @@ -1,16 +1,18 @@ {"1.2.0", -[{<<"epcap">>, +[{<<"cut">>,{pkg,<<"cut">>,<<"1.0.3">>},1}, + {<<"epcap">>, {git,"https://github.com/msantos/epcap", {ref,"d5c03caf608c1369e68cfed0a606d3eb82ddfd21"}}, 1}, {<<"goldrush">>,{pkg,<<"goldrush">>,<<"0.1.9">>},1}, + {<<"gtplib">>,{pkg,<<"gtplib">>,<<"3.2.0">>},0}, {<<"lager">>, {git,"https://github.com/erlang-lager/lager", {ref,"459a3b2cdd9eadd29e5a7ce5c43932f5ccd6eb88"}}, 0}, {<<"osmo_gsup">>, {git,"https://gitea.osmocom.org/erlang/osmo_gsup", - {ref,"07672d8ab1608aa9c9e50ca035521876558fcd42"}}, + {ref,"e23f118e6e8f7ee1247db34e4cb79e4cecdb0947"}}, 0}, {<<"osmo_ss7">>, {git,"https://gitea.osmocom.org/erlang/osmo_ss7", @@ -23,10 +25,17 @@ {<<"pkt">>, {git,"https://github.com/msantos/pkt", {ref,"67a4a14f596fded5ad5f2d8f94318faa8ad2c288"}}, - 1}]}. + 1}, + {<<"ppplib">>,{pkg,<<"ppplib">>,<<"1.0.0">>},1}]}. [ {pkg_hash,[ - {<<"goldrush">>, <<"F06E5D5F1277DA5C413E84D5A2924174182FB108DABB39D5EC548B27424CD106">>}]}, + {<<"cut">>, <<"1577F2F3BC0F2BF3B97903B7426F8A3D79523687B6A444D0F59A095EF69A0E81">>}, + {<<"goldrush">>, <<"F06E5D5F1277DA5C413E84D5A2924174182FB108DABB39D5EC548B27424CD106">>}, + {<<"gtplib">>, <<"41E8E14BE21DD6E08B2CBB9D708BCF8FDD47CA49D7FFA480219CAB29F5AE2760">>}, + {<<"ppplib">>, <<"F9EC2690532BAF590277A305A2276FCFAD0285557E1055552F8A2FCAF1BF081A">>}]}, {pkg_hash_ext,[ - {<<"goldrush">>, <<"99CB4128CFFCB3227581E5D4D803D5413FA643F4EB96523F77D9E6937D994CEB">>}]} + {<<"cut">>, <<"1A4A25DB2B7C5565FD28B314A4EEB898B1ED3CAFFA1AB09149345FB5731ED04B">>}, + {<<"goldrush">>, <<"99CB4128CFFCB3227581E5D4D803D5413FA643F4EB96523F77D9E6937D994CEB">>}, + {<<"gtplib">>, <<"264626E6993C17B00CA3C083B9BF23D16B88BEEDDDE35F62C954832C21B57AEF">>}, + {<<"ppplib">>, <<"32440D630F55DD29F849847DD8F15F69175FDDC210AA88517AC8AD2854CD6FA1">>}]} ]. diff --git a/src/epdg_gtpc_s2b.erl b/src/epdg_gtpc_s2b.erl new file mode 100644 index 0000000..d2238a0 --- /dev/null +++ b/src/epdg_gtpc_s2b.erl @@ -0,0 +1,159 @@ +% S2b: GTPv2C towards PGW +% +% TS 29.273 +% +% (C) 2023 by sysmocom - s.m.f.c. GmbH <info(a)sysmocom.de> +% Author: Pau Espin Pedrol <pespin(a)sysmocom.de> +% +% All Rights Reserved +% +% This program is free software; you can redistribute it and/or modify +% it under the terms of the GNU Affero General Public License as +% published by the Free Software Foundation; either version 3 of the +% License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU Affero General Public License +% along with this program. If not, see <http://www.gnu.org/licenses/>. +% +% Additional Permission under GNU AGPL version 3 section 7: +% +% If you modify this Program, or any covered work, by linking or +% combining it with runtime libraries of Erlang/OTP as released by +% Ericsson on http://www.erlang.org (or a modified version of these +% libraries), containing parts covered by the terms of the Erlang Public +% License (http://www.erlang.org/EPLICENSE) the licensors of this +% Program grant you additional permission to convey the resulting work +% without the need to license the runtime libraries of Erlang/OTP under +% the GNU Affero General Public License. Corresponding Source for a +% non-source form of such a combination shall include the source code +% for the parts of the runtime libraries of Erlang/OTP used as well as +% that of the covered work. + + +-module(epdg_gtpc_s2b). +-author('Pau Espin Pedrol <pespin(a)sysmocom.de>'). + +-behaviour(gen_server). + +-include_lib("diameter_3gpp_ts29_273_swx.hrl"). +-include_lib("diameter/include/diameter_gen_base_rfc6733.hrl"). + +%% API Function Exports +-export([start_link/5]). +-export([terminate/2]). +%% gen_server Function Exports +-export([init/1, handle_call/3, handle_cast/2, handle_info/2]). +-export([code_change/3]). +%%-export([multimedia_auth_request/6]). + +%% Application Definitions +-define(SERVER, ?MODULE). +-define(SVC_NAME, ?MODULE). +-define(APP_ALIAS, ?MODULE). +-define(CALLBACK_MOD, epdg_gtpc_s2b_cb). +-define(ENV_APP_NAME, osmo_epdg). + +%% The service configuration. As in the server example, a client +%% supporting multiple Diameter applications may or may not want to +%% configure a common callback module on all applications. +-define(SERVICE, + [{'Origin-Host', application:get_env(?ENV_APP_NAME, origin_host, ?ENV_DEFAULT_ORIG_HOST)}, + {'Origin-Realm', application:get_env(?ENV_APP_NAME, origin_realm, ?ENV_DEFAULT_ORIG_REALM)}, + {'Vendor-Id', application:get_env(?ENV_APP_NAME, vendor_id, ?ENV_DEFAULT_VENDOR_ID)}, + {'Vendor-Specific-Application-Id', + [#'diameter_base_Vendor-Specific-Application-Id'{ + 'Vendor-Id' = ?VENDOR_ID_3GPP, + 'Auth-Application-Id' = [?DIAMETER_APP_ID_SWX]}]}, + {'Product-Name', "osmo-epdg"}, + % TODO: check which we should annouce here as Supported-Vendor-Id + {'Supported-Vendor-Id', [?VENDOR_ID_3GPP, ?VENDOR_ID_ETSI, ?VENDOR_ID_3GPP2]}, + { application, + [{alias, ?APP_ALIAS}, + {dictionary, ?DIAMETER_DICT_SWX}, + {module, ?CALLBACK_MOD}, + {answer_errors, callback}]}]). + +-record(state, { + handlers, + peers = #{} +}). + +start_link(LocalAddr, LocalPort, RemoteAddr, RemotePort, Options) -> + gen_server:start_link({local, ?SERVER}, ?MODULE, [LocalAddr, LocalPort, RemoteAddr, RemotePort, Options], []). + +peer_down(API, SvcName, {PeerRef, _} = Peer) -> + % fixme: why do we still have ets here? + (catch ets:delete(?MODULE, {API, PeerRef})), + gen_server:cast(?SERVER, {peer_down, SvcName, Peer}), + ok. + +init(State) -> + lager:info("epdg_gtpc_s2b: init(): ~p", [State]), + [_ | [_ | [RemoteAddr | [RemotePort | _]]]] = State, + %Proto = application:get_env(?ENV_APP_NAME, diameter_proto, ?ENV_DEFAULT_DIAMETER_PROTO), + %Ip = application:get_env(?ENV_APP_NAME, diameter_remote_ip, ?ENV_DEFAULT_DIAMETER_REMOTE_IP), + %Port = application:get_env(?ENV_APP_NAME, diameter_remote_port, ?ENV_DEFAULT_DIAMETER_REMOTE_PORT), + %ok = diameter:start_service(?MODULE, ?SERVICE), + % lager:info("DiaServices is ~p~n", [DiaServ]), + {ok, _} = connect({address, RemoteAddr, RemotePort}), + {ok, State}. + + +%% multimedia_auth_request(IMSI, NumAuthItems, AuthScheme, RAT, CKey, IntegrityKey) -> +%% gen_server:call(?SERVER, +%% {mar, {IMSI, NumAuthItems, AuthScheme, RAT, CKey, IntegrityKey}}). + +handle_call({mar, {IMSI, NumAuthItems, AuthScheme, RAT, CKey, IntegrityKey}}, _From, State) -> + lager:error("Error: not implemented!~n", []), + {reply, {error, 'not-implemented'}, State}. + +%% @callback gen_server +handle_cast(stop, State) -> + {stop, normal, State}; +handle_cast(_Req, State) -> + {noreply, State}. + +%% @callback gen_server +handle_info(_Info, State) -> + {noreply, State}. + +%% @callback gen_server +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +%% @callback gen_server +terminate(normal, _State) -> + diameter:stop_service(?SVC_NAME), + ok; +terminate(shutdown, _State) -> + ok; +terminate({shutdown, _Reason}, _State) -> + ok; +terminate(_Reason, _State) -> + ok. + +%% ------------------------------------------------------------------ +%% Internal Function Definitions +%% ------------------------------------------------------------------ + +%% connect/2 +connect(Name, {address, IPAddr, Port}) -> + lager:notice("~s connecting to IP ~s port ~p~n", [Name, IPAddr, Port]), + {ok, IP} = inet_parse:address(IPAddr), + TransportOpts = + [{transport_module, udp}, + {transport_config, + [{reuseaddr, true}, + {raddr, IP}, + {rport, Port}]}], + diameter:add_transport(Name, {connect, [{reconnect_timer, 1000} | TransportOpts]}). + +connect(Address) -> + connect(?SVC_NAME, Address). + + diff --git a/src/gsup_server.erl b/src/gsup_server.erl index 923d020..9bd4552 100644 --- a/src/gsup_server.erl +++ b/src/gsup_server.erl @@ -177,6 +177,7 @@ % epdg tunnel request / trigger the establishment to the PGW and prepares everything for the user traffic to flow % When sending a epdg_tunnel_response everything must be ready for the UE traffic handle_info({ipa, Socket, ?IPAC_PROTO_EXT_GSUP, GsupMsgRx = #{message_type := epdg_tunnel_request, imsi := Imsi}}, S) -> + lager:info("Rx EPDG Tunnel Req IMSI ~p ~n", [Imsi]), {noreply, S}; handle_info(Info, S) -> diff --git a/src/osmo_epdg.app.src b/src/osmo_epdg.app.src index 483d339..ec60bd2 100644 --- a/src/osmo_epdg.app.src +++ b/src/osmo_epdg.app.src @@ -8,6 +8,7 @@ kernel, stdlib, lager, + gtplib, diameter, osmo_gsup, osmo_ss7 diff --git a/src/osmo_epdg_sup.erl b/src/osmo_epdg_sup.erl index 457d993..c679b39 100644 --- a/src/osmo_epdg_sup.erl +++ b/src/osmo_epdg_sup.erl @@ -8,6 +8,10 @@ -define(ENV_APP_NAME, osmo_epdg). -define(ENV_DEFAULT_GSUP_LOCAL_IP, "0.0.0.0"). -define(ENV_DEFAULT_GSUP_LOCAL_PORT, 4222). +-define(ENV_DEFAULT_GTPC_LOCAL_IP, "127.0.0.2"). +-define(ENV_DEFAULT_GTPC_LOCAL_PORT, 2123). +-define(ENV_DEFAULT_GTPC_REMOTE_IP, "127.0.0.1"). +-define(ENV_DEFAULT_GTPC_REMOTE_PORT, 2123). start_link() -> supervisor:start_link({local, ?SERVER}, ?MODULE, []). @@ -15,11 +19,20 @@ init([]) -> GsupLocalIp = application:get_env(?ENV_APP_NAME, gsup_local_ip, ?ENV_DEFAULT_GSUP_LOCAL_IP), GsupLocalPort = application:get_env(?ENV_APP_NAME, gsup_local_port, ?ENV_DEFAULT_GSUP_LOCAL_PORT), + GtpcLocalIp = application:get_env(?ENV_APP_NAME, gtpc_local_ip, ?ENV_DEFAULT_GTPC_LOCAL_IP), + GtpcLocalPort = application:get_env(?ENV_APP_NAME, gtpc_local_port, ?ENV_DEFAULT_GTPC_LOCAL_PORT), + GtpcRemoteIp = application:get_env(?ENV_APP_NAME, gtpc_remote_ip, ?ENV_DEFAULT_GTPC_REMOTE_IP), + GtpcRemotePort = application:get_env(?ENV_APP_NAME, gtpc_remote_port, ?ENV_DEFAULT_GTPC_REMOTE_PORT), DiaServer = {epdg_diameter_swx, {epdg_diameter_swx,start_link,[]}, permanent, 5000, worker, [epdg_diameter_swx_cb]}, + GtpcServer = {epdg_gtpc_s2b, {epdg_gtpc_s2b,start_link, [GtpcLocalIp, GtpcLocalPort, GtpcRemoteIp, GtpcRemotePort, []]}, + permanent, + 5000, + worker, + [epdg_gtpc_s2b]}, GsupServer = {gsup_server, {gsup_server, start_link, [GsupLocalIp, GsupLocalPort, []]}, permanent, 5000, @@ -30,4 +43,4 @@ 5000, worker, [auth_handler]}, - {ok, { {one_for_all, 5, 10}, [DiaServer, GsupServer, AuthHandler]} }. + {ok, { {one_for_all, 5, 10}, [DiaServer, GtpcServer, GsupServer, AuthHandler]} }. -- To view, visit https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/34804?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: erlang/osmo-epdg Gerrit-Branch: master Gerrit-Change-Id: I6f00b7fce2d5fcdc484bfd45629b9141f16bc579 Gerrit-Change-Number: 34804 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[L] Change in osmo-bsc[master]: ASCI: Add System Information 10 support
by fixeria 18 Oct '23

18 Oct '23
Attention is currently required from: jolly, laforge, pespin. fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/34626?usp=email ) Change subject: ASCI: Add System Information 10 support ...................................................................... Patch Set 5: (3 comments) Patchset: PS2: > The idea was to wait 3 seconds, which allows the MS to receive the SI5* messages before adding the S […] I don't have a strong preference here... What happens if an MS gets `SI10` before `SI5`? I would expect the phone to ignore `SI10` in this case? Or cache it and postpone handling until `SI5` is received (this is what we do in osmocom-bb.git for `SI3`/`SI4` and `SI1`). Even if `SI10` is ignored when received before `SI5`, the BTS will be broadcasting it repeatedly on SACCH anyway. Based on that, I think we can send it for every channel that is established straightaway, without delaying. File src/osmo-bsc/system_information.c: https://gerrit.osmocom.org/c/osmo-bsc/+/34626/comment/37ba55da_6389a499 PS2, Line 1428: unsigned int save_cur_bit; : struct gsm_subscriber_connection *c; > I always want to separate variables from code. […] You could still have them variables defined separately from code within a for-loop, but it's not really critical and I am not going to block. Marking as resolved. https://gerrit.osmocom.org/c/osmo-bsc/+/34626/comment/b61e1262_19347103 PS2, Line 1447: 32 > SI 10 uses channel index with 5 bit. […] Makes sense. Marking as resolved. -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/34626?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: Icd3101e6dd935a57f003253aaef400c2cf95a0c3 Gerrit-Change-Number: 34626 Gerrit-PatchSet: 5 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-CC: pespin <pespin(a)sysmocom.de> Gerrit-Attention: jolly <andreas(a)eversberg.eu> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Wed, 18 Oct 2023 10:53:26 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: jolly <andreas(a)eversberg.eu> Comment-In-Reply-To: laforge <laforge(a)osmocom.org> Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de> Comment-In-Reply-To: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: comment
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • ...
  • 185
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.