Compare commits

..

21 Commits

Author SHA1 Message Date
Sukchan Lee
179df88c32 Update debian changelog 2019-05-18 08:19:39 +00:00
Sukchan Lee
bc180c3ffc Improve sanity check for queue-push fail 2019-05-06 23:13:26 +09:00
Sukchan Lee
ab81e38487 Fix the ./testsimple crash in MacOSX 2019-05-06 22:49:58 +09:00
Sukchan Lee
2d7438313d Change initialization sequence 2019-05-06 20:43:50 +09:00
Sukchan Lee
bb67705a66 BUGFIX: if SCTP uses SEQPACKET, sock should not use hash key. 2019-05-06 19:22:43 +09:00
Sukchan Lee
f097364d52 Merge branch 'master' of https://github.com/open5gs/nextepc 2019-05-03 12:43:17 +00:00
Sukchan Lee
0992fbe7f3 Fix the bug of segmentation fault in test program (#175) 2019-05-03 12:41:57 +00:00
Sukchan Lee
9bef56806e Merge pull request #178 from medeiros405/master
Change in the Log about the address use for the UE.
2019-05-03 12:27:37 +10:00
medeiros405
2ef9718209 Change in the Log about the address use for the UE. 2019-05-02 21:40:10 -03:00
Sukchan Lee
d744893fba Update document to fix the WebUI installation URL (#176) 2019-05-02 16:34:05 +10:00
Sukchan Lee
0291d97dd5 Update document for changing debian repository 2019-05-01 18:13:21 +09:00
Sukchan Lee
a5f764544f Remove net-select in debian docker 2019-05-01 17:43:42 +09:00
Sukchan Lee
39766bc379 Merge branch 'master' of https://github.com/open5gs/nextepc 2019-05-01 17:25:29 +09:00
Sukchan Lee
bf1c6c00fe change fedora latest version 2019-05-01 17:24:59 +09:00
Sukchan Lee
c8ed909f46 Remove __DATE__/__TIME due to reproduce same binary 2019-05-01 07:56:46 +00:00
Sukchan Lee
49adabdc70 Fix the compile error for CentOS (#175) 2019-04-30 21:22:35 +00:00
Sukchan Lee
e5523342d4 Set submodule to ogslib master 2019-05-01 00:22:43 +09:00
Sukchan Lee
08efe857a0 Merge branch 'master' of https://github.com/open5gs/nextepc 2019-04-30 15:19:03 +00:00
Sukchan Lee
aec51b399a add xenial package 2019-04-30 15:18:50 +00:00
Sukchan Lee
ce2590d6fc fix the warning 2019-04-30 00:04:43 +09:00
Sukchan Lee
157d5fd739 Update NEWS document 2019-04-29 23:47:33 +09:00
60 changed files with 312 additions and 226 deletions

6
debian/changelog vendored
View File

@@ -1,8 +1,8 @@
nextepc (0.4.0-5~ubuntu) bionic; urgency=medium
nextepc (0.4.1) unstable; urgency=medium
* Integration with OGSLIB
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Mon, 29 Apr 2019 14:30:15 +0000
-- Sukchan Lee <acetcom@gmail.com> Sat, 18 May 2019 08:18:59 +0000
nextepc (0.4.0) unstable; urgency=medium

View File

@@ -5,14 +5,14 @@ FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
ARG tag=stable
RUN apt-get update && \
apt-get install -y netselect-apt && \
apt-get clean && \
if [ "x$tag" = "xlatest" ]; then \
netselect-apt -o /etc/apt/sources.list; \
else \
netselect-apt ${tag} -o /etc/apt/sources.list; \
fi
#RUN apt-get update && \
# apt-get install -y netselect-apt && \
# apt-get clean && \
# if [ "x$tag" = "xlatest" ]; then \
# netselect-apt -o /etc/apt/sources.list; \
# else \
# netselect-apt ${tag} -o /etc/apt/sources.list; \
# fi
RUN apt-get update && \
apt-get upgrade -y && \

View File

@@ -1 +1 @@
27
29

View File

@@ -31,7 +31,7 @@ $ sudo apt-key add Release.key
In Debian 9.0(stretch), you can install it as follows:
```bash
$ sudo sh -c "echo 'deb https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_9.0/ ./' > /etc/apt/sources.list.d/open5gs.list"
$ sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_9.0/ ./' > /etc/apt/sources.list.d/open5gs.list"
$ sudo apt update
$ sudo apt install nextepc
```
@@ -39,12 +39,12 @@ $ sudo apt install nextepc
Other Linux distributions can be installed by changing the path.
```
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_9.0/
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Raspbian_9.0/
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_16.04/
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_17.10/
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.10/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_9.0/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Raspbian_9.0/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_16.04/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_17.10/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.10/
```
[Martin Hauke](https://build.opensuse.org/user/show/mnhauke) packaged NextEPC for *openSUSE* on [OBS](https://build.opensuse.org/package/show/home:mnhauke:nextepc/nextepc).
@@ -119,6 +119,7 @@ $ sudo systemctl restart nextepc-sgwd
1. *Debian and Ubuntu* based Linux distributions can install [Node.js](https://nodejs.org/) as follows:
```bash
$ sudo apt update
$ sudo apt install curl
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt install nodejs
@@ -133,7 +134,7 @@ $ sudo systemctl restart nextepc-sgwd
You can now install WebUI of NextEPC.
```bash
$ curl -sL {{ site.url }}/static/webui/install | sudo -E bash -
$ curl -sL {{ site.url }}{{ site.baseurl }}/assets/webui/install | sudo -E bash -
```
### Register Subscriber Information

View File

@@ -8,4 +8,4 @@ tags:
- Release
---
- Assets -- [v0.1.0.tar.gz](https://github.com/acetcom/nextepc/archive/v0.1.0.tar.gz)
- Assets -- [v0.1.0.tar.gz](https://github.com/open5gs/nextepc/archive/v0.1.0.tar.gz)

View File

@@ -8,5 +8,5 @@ tags:
- Release
---
- Fix the bug related to Mongo C Driver. [[More Info](https://github.com/acetcom/nextepc/commit/4245502ae287df9c457621b3f4cccb519c4d4878)]
- Assets -- [v0.1.1.tar.gz](https://github.com/acetcom/nextepc/archive/v0.1.1.tar.gz)
- Fix the bug related to Mongo C Driver. [[More Info](https://github.com/open5gs/nextepc/commit/4245502ae287df9c457621b3f4cccb519c4d4878)]
- Assets -- [v0.1.1.tar.gz](https://github.com/open5gs/nextepc/archive/v0.1.1.tar.gz)

View File

@@ -11,4 +11,4 @@ tags:
- Publish Debian/Ubuntu Package
- Support FreeBSD and Mac OS X"
- Assets -- [v0.2.0.tar.gz](https://github.com/acetcom/nextepc/archive/v0.2.0.tar.gz)
- Assets -- [v0.2.0.tar.gz](https://github.com/open5gs/nextepc/archive/v0.2.0.tar.gz)

View File

@@ -11,4 +11,4 @@ tags:
- IPv6 Support (Linux Only)
- Change Configuration File (JSON -> YAML)
- Assets -- [v0.3.0.tar.gz](https://github.com/acetcom/nextepc/archive/v0.3.0.tar.gz)
- Assets -- [v0.3.0.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.0.tar.gz)

View File

@@ -8,5 +8,5 @@ tags:
- Release
---
- Add Authentication Synch Failure ([#11](https://github.com/acetcom/nextepc/issues/11)) -- [eric80s](https://github.com/eric80s)
- Assets -- [v0.3.1.tar.gz](https://github.com/acetcom/nextepc/archive/v0.3.1.tar.gz)
- Add Authentication Synch Failure ([#11](https://github.com/open5gs/nextepc/issues/11)) -- [eric80s](https://github.com/eric80s)
- Assets -- [v0.3.1.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.1.tar.gz)

View File

@@ -10,11 +10,11 @@ head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### New
- Docker support ([#16](https://github.com/acetcom/nextepc/issues/16)) -- [amilenovic](https://github.com/amilenovic)
- Docker support ([#16](https://github.com/open5gs/nextepc/issues/16)) -- [amilenovic](https://github.com/amilenovic)
#### Bug fixes
- Fix the BUG for MAC failure of authentication failure -- [#17](https://github.com/acetcom/nextepc/issues/17) from [razaborg](https://github.com/razaborg)
- Fix the BUG for EPS attach type of Attach accept -- [#12](https://github.com/acetcom/nextepc/issues/12) from [pcminitech](https://github.com/pcminitech)
- Fix the BUG for MAC failure of authentication failure -- [#17](https://github.com/open5gs/nextepc/issues/17) from [razaborg](https://github.com/razaborg)
- Fix the BUG for EPS attach type of Attach accept -- [#12](https://github.com/open5gs/nextepc/issues/12) from [pcminitech](https://github.com/pcminitech)
Download -- [v0.3.3.tar.gz](https://github.com/acetcom/nextepc/archive/v0.3.3.tar.gz)
Download -- [v0.3.3.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.3.tar.gz)
{: .notice--info}

View File

@@ -10,11 +10,11 @@ head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### New
- Support Network Name ([#22](https://github.com/acetcom/nextepc/pull/22)) -- [medeiros405](https://github.com/medeiros405)
- Support Network Name ([#22](https://github.com/open5gs/nextepc/pull/22)) -- [medeiros405](https://github.com/medeiros405)
#### Bug fixes
- Fix the BUG for security capabilities mismatch ([#27](https://github.com/acetcom/nextepc/issues/27)) -- [wayne43290](https://github.com/wayne43290)
- Fix the BUG that SGW process is dead during paging process ([#18](https://github.com/acetcom/nextepc/issues/18)) -- [jackson040407](https://github.com/jackson040407)
- Fix the BUG for security capabilities mismatch ([#27](https://github.com/open5gs/nextepc/issues/27)) -- [wayne43290](https://github.com/wayne43290)
- Fix the BUG that SGW process is dead during paging process ([#18](https://github.com/open5gs/nextepc/issues/18)) -- [jackson040407](https://github.com/jackson040407)
Download -- [v0.3.5.tar.gz](https://github.com/acetcom/nextepc/archive/v0.3.5.tar.gz)
Download -- [v0.3.5.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.5.tar.gz)
{: .notice--info}

View File

@@ -8,8 +8,8 @@ tags:
- Release
---
- Support eNB/MME Configuration Transfer, Error Indication ([#29](https://github.com/acetcom/nextepc/issues/29)) -- [wayne43290](https://github.com/wayne43290)
- Increase SCTP recv buffer : 2048->8192 ([#35](https://github.com/acetcom/nextepc/issues/35)) -- [EugeneBogush](https://github.com/EugeneBogush)
- Support eNB/MME Configuration Transfer, Error Indication ([#29](https://github.com/open5gs/nextepc/issues/29)) -- [wayne43290](https://github.com/wayne43290)
- Increase SCTP recv buffer : 2048->8192 ([#35](https://github.com/open5gs/nextepc/issues/35)) -- [EugeneBogush](https://github.com/EugeneBogush)
Download -- [v0.3.6.tar.gz](https://github.com/acetcom/nextepc/archive/v0.3.6.tar.gz)
Download -- [v0.3.6.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.6.tar.gz)
{: .notice--info}

View File

@@ -8,5 +8,5 @@ tags:
- Release
---
Download -- [v0.3.7.tar.gz](https://github.com/acetcom/nextepc/archive/v0.3.7.tar.gz)
Download -- [v0.3.7.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.7.tar.gz)
{: .notice--info}

View File

@@ -13,11 +13,11 @@ head_inline: "<style> ul { padding-bottom: 1em; } </style>"
- Support NAS encryption(EEA1/EEA2/EEA3)
#### Bug fixes
- Confirm with 36.412 requirement of SCTP stream id ([#54](https://github.com/acetcom/nextepc/issues/54)) -- [brchiu](https://github.com/brchiu)
- Fix to set correct timezone in UE ([#61](https://github.com/acetcom/nextepc/pull/61)) -- [medeiros405](https://github.com/medeiros405)
- Fix to change MME's integrity order ([#64](https://github.com/acetcom/nextepc/issues/64)) -- [kewinrausch](https://github.com/kewinrausch)
- Fix the bug for tracking area update ([#29](https://github.com/acetcom/nextepc/issues/29)) -- [wayne43290](https://github.com/wayne43290)
- Fix the bug for indirect tunnel ([#29](https://github.com/acetcom/nextepc/issues/29)) -- [wayne43290](https://github.com/wayne43290)
- Confirm with 36.412 requirement of SCTP stream id ([#54](https://github.com/open5gs/nextepc/issues/54)) -- [brchiu](https://github.com/brchiu)
- Fix to set correct timezone in UE ([#61](https://github.com/open5gs/nextepc/pull/61)) -- [medeiros405](https://github.com/medeiros405)
- Fix to change MME's integrity order ([#64](https://github.com/open5gs/nextepc/issues/64)) -- [kewinrausch](https://github.com/kewinrausch)
- Fix the bug for tracking area update ([#29](https://github.com/open5gs/nextepc/issues/29)) -- [wayne43290](https://github.com/wayne43290)
- Fix the bug for indirect tunnel ([#29](https://github.com/open5gs/nextepc/issues/29)) -- [wayne43290](https://github.com/wayne43290)
Download -- [v0.3.9.tar.gz](https://github.com/acetcom/nextepc/archive/v0.3.9.tar.gz)
Download -- [v0.3.9.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.9.tar.gz)
{: .notice--info}

View File

@@ -10,12 +10,12 @@ head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### Bug fixes
- Renew freeDiameter Certificate ([#93](https://github.com/acetcom/nextepc/issues/93), [#94](https://github.com/acetcom/nextepc/issues/94)) -- [Ravi-t](https://github.com/Ravi-t), [hchenji](https://github.com/hchenji)
- Fix TLV uint32 bug ([#73](https://github.com/acetcom/nextepc/pull/73)) -- [giuliol](https://github.com/giuliol)
- Add TRACE for IP address of connected UEs ([#71](https://github.com/acetcom/nextepc/issues/71)) -- [pgupta408](https://github.com/Ravi-t)
- Show reason string for YAML parser error ([#40](https://github.com/acetcom/nextepc/issues/40)) -- [Raw1mage](https://github.com/Raw1mage)
- Renew freeDiameter Certificate ([#93](https://github.com/open5gs/nextepc/issues/93), [#94](https://github.com/open5gs/nextepc/issues/94)) -- [Ravi-t](https://github.com/Ravi-t), [hchenji](https://github.com/hchenji)
- Fix TLV uint32 bug ([#73](https://github.com/open5gs/nextepc/pull/73)) -- [giuliol](https://github.com/giuliol)
- Add TRACE for IP address of connected UEs ([#71](https://github.com/open5gs/nextepc/issues/71)) -- [pgupta408](https://github.com/Ravi-t)
- Show reason string for YAML parser error ([#40](https://github.com/open5gs/nextepc/issues/40)) -- [Raw1mage](https://github.com/Raw1mage)
- Fix compile error for GCC 8.1
- Fix compile error for Mongo-C-Driver 1.11
Download -- [v0.3.10.tar.gz](https://github.com/acetcom/nextepc/archive/v0.3.10.tar.gz)
Download -- [v0.3.10.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.10.tar.gz)
{: .notice--info}

View File

@@ -10,19 +10,19 @@ head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### Enhancements
- Support 4-bytes RES in NAS Auth ([#147](https://github.com/acetcom/nextepc/issues/147)) -- [Ranjjiitsingh](https://github.com/Ranjjiitsingh)
- Add SGW selection mode ([#100](https://github.com/acetcom/nextepc/pull/100)) -- [TerryAlu](https://github.com/TerryAlu)
- Support 4-bytes RES in NAS Auth ([#147](https://github.com/open5gs/nextepc/issues/147)) -- [Ranjjiitsingh](https://github.com/Ranjjiitsingh)
- Add SGW selection mode ([#100](https://github.com/open5gs/nextepc/pull/100)) -- [TerryAlu](https://github.com/TerryAlu)
#### Bug fixes
- Increase packet memory buffer ([#161](https://github.com/acetcom/nextepc/issues/161)) -- [mathieuxilan](https://github.com/mathieuxilan)
- Fix setting END-ID to 0 ([#156](https://github.com/acetcom/nextepc/issues/156)) -- [hypercloud2017](https://github.com/hypercloud2017)
- Fix incorrect timezone in NAS & GTP ([#140](https://github.com/acetcom/nextepc/issues/140)) -- [EugeneBogush](https://github.com/EugeneBogush)
- Increase packet memory buffer ([#161](https://github.com/open5gs/nextepc/issues/161)) -- [mathieuxilan](https://github.com/mathieuxilan)
- Fix setting END-ID to 0 ([#156](https://github.com/open5gs/nextepc/issues/156)) -- [hypercloud2017](https://github.com/hypercloud2017)
- Fix incorrect timezone in NAS & GTP ([#140](https://github.com/open5gs/nextepc/issues/140)) -- [EugeneBogush](https://github.com/EugeneBogush)
#### Miscellaneous
- nas_message.py: Fix copy+paste error([#159](https://github.com/acetcom/nextepc/issues/159)) -- [laf0rge](https://github.com/laf0rge)
- Fix missing 'break' statement ([#129](https://github.com/acetcom/nextepc/pull/129)) -- [EugeneBogush](https://github.com/EugeneBogush)
- Add missing C namespace ([#109](https://github.com/acetcom/nextepc/pull/109)) -- [brchiu](https://github.com/brchiu)
- nas_message.py: Fix copy+paste error([#159](https://github.com/open5gs/nextepc/issues/159)) -- [laf0rge](https://github.com/laf0rge)
- Fix missing 'break' statement ([#129](https://github.com/open5gs/nextepc/pull/129)) -- [EugeneBogush](https://github.com/EugeneBogush)
- Add missing C namespace ([#109](https://github.com/open5gs/nextepc/pull/109)) -- [brchiu](https://github.com/brchiu)
- Refine EXIT routine for daemon process
Download -- [v0.3.11.tar.gz](https://github.com/acetcom/nextepc/archive/v0.3.11.tar.gz)
Download -- [v0.3.11.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.11.tar.gz)
{: .notice--info}

View File

@@ -0,0 +1,20 @@
---
title: "v0.4.0 - Integration with OGSLib"
date: 2019-04-29 23:44:00 +0900
categories:
- Release
tags:
- News
- Release
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### Enhancements
- Integration with OGSLib
- High CPU usage on idle ([#87](https://github.com/open5gs/nextepc/issues/87)) -- [hchenji](https://github.com/hchenji)
#### Bug fixes
- The problem related to MNC of LENGTH 3 ([#163](https://github.com/open5gs/nextepc/issues/163)) -- [Avi-Dekra](https://github.com/Avi-Dekra)
Download -- [v0.4.0.tar.gz](https://github.com/open5gs/nextepc/archive/v0.4.0.tar.gz)
{: .notice--info}

6
main.c
View File

@@ -9,11 +9,7 @@
#include "app/application.h"
#include "app_init.h"
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdate-time"
static char *version = "NextEPC daemon v" \
PACKAGE_VERSION " - "__DATE__ " " __TIME__;
#pragma GCC diagnostic pop
static char *version = "NextEPC daemon v" PACKAGE_VERSION;
static void show_version()
{

View File

@@ -114,16 +114,11 @@ int app_did_initialize(void)
void app_will_terminate(void)
{
if (context_self()->config.db_uri)
{
ogs_info("DB-Client try to terminate");
context_db_final();
ogs_info("DB-Client terminate...done");
}
}
void app_did_terminate(void)
{
context_db_final();
context_final();
}

View File

@@ -298,7 +298,10 @@ int context_db_init(const char *db_uri)
const mongoc_uri_t *uri;
memset(&self.db, 0, sizeof self.db);
mongoc_init();
self.db.initialized = true;
self.db.client = mongoc_client_new(db_uri);
if (!self.db.client)
@@ -335,18 +338,19 @@ int context_db_init(const char *db_uri)
int context_db_final()
{
if (self.db.database)
{
if (self.db.database) {
mongoc_database_destroy(self.db.database);
self.db.database = NULL;
}
if (self.db.client)
{
if (self.db.client) {
mongoc_client_destroy(self.db.client);
self.db.client = NULL;
}
mongoc_cleanup();
if (self.db.initialized) {
mongoc_cleanup();
self.db.initialized = false;
}
return OGS_OK;
}

View File

@@ -46,6 +46,7 @@ typedef struct _context_t {
config_t config;
struct {
bool initialized;
const char *name;
void *uri;
void *client;

View File

@@ -8,7 +8,7 @@ extern "C" {
int app_initialize(app_param_t *param);
#define app_terminate epc_terminate
int epc_initialize();
int epc_initialize(app_param_t *param);
void epc_terminate(void);
int mme_initialize();

View File

@@ -61,8 +61,7 @@ int epc_initialize(app_param_t *param)
if (pcrf_sem1) ogs_proc_mutex_delete(pcrf_sem1);
if (pcrf_sem2) ogs_proc_mutex_delete(pcrf_sem2);
app_did_terminate();
context_final();
ogs_core_finalize();
_exit(EXIT_SUCCESS);
@@ -108,8 +107,7 @@ int epc_initialize(app_param_t *param)
if (pgw_sem1) ogs_proc_mutex_delete(pgw_sem1);
if (pgw_sem2) ogs_proc_mutex_delete(pgw_sem2);
app_did_terminate();
context_final();
ogs_core_finalize();
_exit(EXIT_SUCCESS);
@@ -157,8 +155,7 @@ int epc_initialize(app_param_t *param)
if (sgw_sem1) ogs_proc_mutex_delete(sgw_sem1);
if (sgw_sem2) ogs_proc_mutex_delete(sgw_sem2);
app_did_terminate();
context_final();
ogs_core_finalize();
_exit(EXIT_SUCCESS);
@@ -207,8 +204,7 @@ int epc_initialize(app_param_t *param)
if (hss_sem1) ogs_proc_mutex_delete(hss_sem1);
if (hss_sem2) ogs_proc_mutex_delete(hss_sem2);
app_did_terminate();
context_final();
ogs_core_finalize();
_exit(EXIT_SUCCESS);

View File

@@ -18,7 +18,7 @@ hss_context_t* hss_self()
return &self;
}
int hss_context_init(void)
void hss_context_init(void)
{
ogs_assert(context_initialized == 0);
@@ -34,19 +34,15 @@ int hss_context_init(void)
ogs_thread_mutex_init(&self.db_lock);
context_initialized = 1;
return OGS_OK;
}
int hss_context_final(void)
void hss_context_final(void)
{
ogs_assert(context_initialized == 1);
ogs_thread_mutex_destroy(&self.db_lock);
context_initialized = 0;
return OGS_OK;
}
static int hss_context_prepare()

View File

@@ -36,8 +36,8 @@ typedef struct _hss_context_t {
ogs_thread_mutex_t db_lock;
} hss_context_t;
int hss_context_init(void);
int hss_context_final(void);
void hss_context_init(void);
void hss_context_final(void);
hss_context_t* hss_self(void);
int hss_context_parse_config(void);

View File

@@ -9,8 +9,7 @@ int hss_initialize(void)
{
int rv;
rv = hss_context_init();
if (rv != OGS_OK) return rv;
hss_context_init();
rv = hss_context_parse_config();
if (rv != OGS_OK) return rv;

View File

@@ -35,7 +35,7 @@ static OGS_POOL(mme_bearer_pool, mme_bearer_t);
static int context_initialized = 0;
int mme_context_init()
void mme_context_init()
{
ogs_assert(context_initialized == 0);
@@ -82,11 +82,9 @@ int mme_context_init()
self.t3413_value = ogs_time_from_sec(2); /* Paging retry timer: 2 secs */
context_initialized = 1;
return OGS_OK;
}
int mme_context_final()
void mme_context_final()
{
ogs_assert(context_initialized == 1);
@@ -129,8 +127,6 @@ int mme_context_final()
ogs_sock_remove_all_nodes(&self.gtpc_list6);
context_initialized = 0;
return OGS_OK;
}
mme_context_t* mme_self()
@@ -1653,7 +1649,8 @@ mme_enb_t *mme_enb_add(ogs_sock_t *sock, ogs_sockaddr_t *addr)
ogs_list_init(&enb->enb_ue_list);
ogs_hash_set(self.enb_sock_hash, enb->sock, sizeof(ogs_sock_t), enb);
if (enb->sock_type == SOCK_STREAM)
ogs_hash_set(self.enb_sock_hash, enb->sock, sizeof(ogs_sock_t), enb);
ogs_hash_set(self.enb_addr_hash, enb->addr, sizeof(ogs_sockaddr_t), enb);
#if HAVE_USRSCTP != 1
@@ -1680,7 +1677,8 @@ int mme_enb_remove(mme_enb_t *enb)
ogs_fsm_fini(&enb->sm, &e);
ogs_fsm_delete(&enb->sm);
ogs_hash_set(self.enb_sock_hash, enb->sock, sizeof(ogs_sock_t), NULL);
if (enb->sock_type == SOCK_STREAM)
ogs_hash_set(self.enb_sock_hash, enb->sock, sizeof(ogs_sock_t), NULL);
ogs_hash_set(self.enb_addr_hash, enb->addr, sizeof(ogs_sockaddr_t), NULL);
ogs_hash_set(self.enb_id_hash, &enb->enb_id, sizeof(enb->enb_id), NULL);

View File

@@ -499,8 +499,8 @@ typedef struct _mme_bearer_t {
gtp_xact_t *xact;
} mme_bearer_t;
int mme_context_init(void);
int mme_context_final(void);
void mme_context_init(void);
void mme_context_final(void);
mme_context_t *mme_self(void);
int mme_context_parse_config(void);

View File

@@ -68,9 +68,6 @@ void mme_event_free(mme_event_t *e);
void mme_event_timeout(void *data);
#define mme_event_send(__ptr_e) \
ogs_assert(ogs_queue_push(mme_self()->queue, ((__ptr_e))) == OGS_OK)
const char *mme_event_get_name(mme_event_t *e);
#ifdef __cplusplus

View File

@@ -383,12 +383,19 @@ static void mme_s6a_aia_cb(void *data, struct msg **msg)
out:
if (!error)
{
int rv;
e = mme_event_new(MME_EVT_S6A_MESSAGE);
ogs_assert(e);
e->mme_ue = mme_ue;
e->pkbuf = s6abuf;
mme_event_send(e);
ogs_pollset_notify(mme_self()->pollset);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_error("ogs_queue_push() failed:%d", (int)rv);
ogs_pkbuf_free(e->pkbuf);
mme_event_free(e);
} else {
ogs_pollset_notify(mme_self()->pollset);
}
}
/* Free the message */
@@ -1029,12 +1036,19 @@ static void mme_s6a_ula_cb(void *data, struct msg **msg)
if (!error)
{
int rv;
e = mme_event_new(MME_EVT_S6A_MESSAGE);
ogs_assert(e);
e->mme_ue = mme_ue;
e->pkbuf = s6abuf;
mme_event_send(e);
ogs_pollset_notify(mme_self()->pollset);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_error("ogs_queue_push() failed:%d", (int)rv);
ogs_pkbuf_free(e->pkbuf);
mme_event_free(e);
} else {
ogs_pollset_notify(mme_self()->pollset);
}
}
/* Free the message */

View File

@@ -25,7 +25,12 @@ static void _gtpv2_c_recv_cb(short when, ogs_socket_t fd, void *data)
e = mme_event_new(MME_EVT_S11_MESSAGE);
ogs_assert(e);
e->pkbuf = pkbuf;
mme_event_send(e);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_error("ogs_queue_push() failed:%d", (int)rv);
ogs_pkbuf_free(e->pkbuf);
mme_event_free(e);
}
}
static ogs_sockaddr_t *pgw_addr_find_by_family(ogs_list_t *list, int family)

View File

@@ -18,7 +18,10 @@ int mme_initialize()
{
int rv;
rv = mme_context_init();
mme_context_init();
mme_event_init();
rv = gtp_xact_init(mme_self()->timer_mgr);
if (rv != OGS_OK) return rv;
rv = mme_context_parse_config();
@@ -71,9 +74,6 @@ static void mme_main(void *data)
ogs_fsm_t mme_sm;
int rv;
mme_event_init();
gtp_xact_init(mme_self()->timer_mgr);
ogs_fsm_create(&mme_sm, mme_state_initial, mme_state_final);
ogs_fsm_init(&mme_sm, 0);

View File

@@ -98,6 +98,7 @@ static void accept_handler(short when, ogs_socket_t fd, void *data)
new = ogs_sock_accept(sock);
if (new)
{
int rv;
ogs_sockaddr_t *addr = NULL;
mme_event_t *e = NULL;
@@ -112,7 +113,12 @@ static void accept_handler(short when, ogs_socket_t fd, void *data)
ogs_assert(e);
e->enb_sock = new;
e->enb_addr = addr;
mme_event_send(e);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_warn("ogs_queue_push() failed:%d", (int)rv);
ogs_free(e->enb_addr);
mme_event_free(e);
}
}
else
{
@@ -122,6 +128,7 @@ static void accept_handler(short when, ogs_socket_t fd, void *data)
void s1ap_recv_handler(short when, ogs_socket_t fd, void *data)
{
int rv;
ogs_pkbuf_t *pkbuf;
int size;
mme_event_t *e = NULL;
@@ -190,7 +197,12 @@ void s1ap_recv_handler(short when, ogs_socket_t fd, void *data)
not->sn_assoc_change.sac_inbound_streams;
e->outbound_streams =
not->sn_assoc_change.sac_outbound_streams;
mme_event_send(e);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_warn("ogs_queue_push() failed:%d", (int)rv);
ogs_free(e->enb_addr);
mme_event_free(e);
}
}
else if (not->sn_assoc_change.sac_state == SCTP_SHUTDOWN_COMP ||
not->sn_assoc_change.sac_state == SCTP_COMM_LOST)
@@ -209,7 +221,12 @@ void s1ap_recv_handler(short when, ogs_socket_t fd, void *data)
ogs_assert(e);
e->enb_sock = sock;
e->enb_addr = addr;
mme_event_send(e);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_warn("ogs_queue_push() failed:%d", (int)rv);
ogs_free(e->enb_addr);
mme_event_free(e);
}
}
break;
}
@@ -228,7 +245,12 @@ void s1ap_recv_handler(short when, ogs_socket_t fd, void *data)
ogs_assert(e);
e->enb_sock = sock;
e->enb_addr = addr;
mme_event_send(e);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_warn("ogs_queue_push() failed:%d", (int)rv);
ogs_free(e->enb_addr);
mme_event_free(e);
}
break;
}
case SCTP_PEER_ADDR_CHANGE:
@@ -276,7 +298,13 @@ void s1ap_recv_handler(short when, ogs_socket_t fd, void *data)
e->enb_sock = sock;
e->enb_addr = addr;
e->pkbuf = pkbuf;
mme_event_send(e);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_warn("ogs_queue_push() failed:%d", (int)rv);
ogs_free(e->enb_addr);
ogs_pkbuf_free(e->pkbuf);
mme_event_free(e);
}
return;
}

View File

@@ -127,6 +127,7 @@ int s1ap_delayed_send_to_enb_ue(
int s1ap_send_to_esm(mme_ue_t *mme_ue, ogs_pkbuf_t *esmbuf)
{
int rv;
mme_event_t *e = NULL;
ogs_assert(mme_ue);
@@ -136,7 +137,12 @@ int s1ap_send_to_esm(mme_ue_t *mme_ue, ogs_pkbuf_t *esmbuf)
ogs_assert(e);
e->mme_ue = mme_ue;
e->pkbuf = esmbuf;
mme_event_send(e);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_warn("ogs_queue_push() failed:%d", (int)rv);
ogs_pkbuf_free(e->pkbuf);
mme_event_free(e);
}
return OGS_OK;
}
@@ -207,13 +213,19 @@ int s1ap_send_to_nas(enb_ue_t *enb_ue,
ogs_assert(h);
if (h->protocol_discriminator == NAS_PROTOCOL_DISCRIMINATOR_EMM)
{
int rv;
e = mme_event_new(MME_EVT_EMM_MESSAGE);
ogs_assert(e);
e->enb_ue = enb_ue;
e->s1ap_code = procedureCode;
e->nas_type = security_header_type.type;
e->pkbuf = nasbuf;
mme_event_send(e);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_warn("ogs_queue_push() failed:%d", (int)rv);
ogs_pkbuf_free(e->pkbuf);
mme_event_free(e);
}
}
else if (h->protocol_discriminator == NAS_PROTOCOL_DISCRIMINATOR_ESM)
{

View File

@@ -384,6 +384,7 @@ static int s1ap_usrsctp_recv_handler(struct socket *sock,
{
if (data)
{
int rv;
mme_event_t *e = NULL;
#undef MSG_NOTIFICATION
@@ -425,8 +426,14 @@ static int s1ap_usrsctp_recv_handler(struct socket *sock,
ogs_assert(e);
e->enb_sock = (ogs_sock_t *)sock;
e->enb_addr = addr;
mme_event_send(e);
ogs_pollset_notify(mme_self()->pollset);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_warn("ogs_queue_push() failed:%d", (int)rv);
ogs_free(e->enb_addr);
mme_event_free(e);
} else {
ogs_pollset_notify(mme_self()->pollset);
}
}
else if (not->sn_assoc_change.sac_state == SCTP_COMM_UP)
{
@@ -444,8 +451,14 @@ static int s1ap_usrsctp_recv_handler(struct socket *sock,
not->sn_assoc_change.sac_inbound_streams;
e->outbound_streams =
not->sn_assoc_change.sac_outbound_streams;
mme_event_send(e);
ogs_pollset_notify(mme_self()->pollset);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_warn("ogs_queue_push() failed:%d", (int)rv);
ogs_free(e->enb_addr);
mme_event_free(e);
} else {
ogs_pollset_notify(mme_self()->pollset);
}
}
break;
}
@@ -464,8 +477,14 @@ static int s1ap_usrsctp_recv_handler(struct socket *sock,
ogs_assert(e);
e->enb_sock = (ogs_sock_t *)sock;
e->enb_addr = addr;
mme_event_send(e);
ogs_pollset_notify(mme_self()->pollset);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_warn("ogs_queue_push() failed:%d", (int)rv);
ogs_free(e->enb_addr);
mme_event_free(e);
} else {
ogs_pollset_notify(mme_self()->pollset);
}
break;
}
case SCTP_PEER_ADDR_CHANGE:
@@ -517,8 +536,15 @@ static int s1ap_usrsctp_recv_handler(struct socket *sock,
e->enb_sock = (ogs_sock_t *)sock;
e->enb_addr = addr;
e->pkbuf = pkbuf;
mme_event_send(e);
ogs_pollset_notify(mme_self()->pollset);
rv = ogs_queue_push(mme_self()->queue, e);
if (rv != OGS_OK) {
ogs_warn("ogs_queue_push() failed:%d", (int)rv);
ogs_free(e->enb_addr);
ogs_pkbuf_free(e->pkbuf);
mme_event_free(e);
} else {
ogs_pollset_notify(mme_self()->pollset);
}
}
else
{

View File

@@ -18,7 +18,7 @@ pcrf_context_t* pcrf_self()
return &self;
}
int pcrf_context_init(void)
void pcrf_context_init(void)
{
ogs_assert(context_initialized == 0);
@@ -37,11 +37,9 @@ int pcrf_context_init(void)
self.ip_hash = ogs_hash_make();
context_initialized = 1;
return OGS_OK;
}
int pcrf_context_final(void)
void pcrf_context_final(void)
{
ogs_assert(context_initialized == 1);
ogs_assert(self.ip_hash);
@@ -51,8 +49,6 @@ int pcrf_context_final(void)
ogs_thread_mutex_destroy(&self.db_lock);
context_initialized = 0;
return OGS_OK;
}
static int pcrf_context_prepare()

View File

@@ -26,8 +26,8 @@ typedef struct _pcrf_context_t {
ogs_thread_mutex_t hash_lock;
} pcrf_context_t;
int pcrf_context_init(void);
int pcrf_context_final(void);
void pcrf_context_init(void);
void pcrf_context_final(void);
pcrf_context_t *pcrf_self(void);
int pcrf_context_parse_config(void);

View File

@@ -8,8 +8,7 @@ int pcrf_initialize(void)
{
int rv;
rv = pcrf_context_init();
if (rv != OGS_OK) return rv;
pcrf_context_init();
rv = pcrf_context_parse_config();
if (rv != OGS_OK) return rv;

View File

@@ -27,7 +27,7 @@ static OGS_POOL(pgw_pf_pool, pgw_pf_t);
static int context_initiaized = 0;
int pgw_context_init()
void pgw_context_init()
{
ogs_assert(context_initiaized == 0);
@@ -62,11 +62,9 @@ int pgw_context_init()
self.sess_hash = ogs_hash_make();
context_initiaized = 1;
return OGS_OK;
}
int pgw_context_final()
void pgw_context_final()
{
ogs_assert(context_initiaized == 1);
@@ -95,8 +93,6 @@ int pgw_context_final()
ogs_sock_remove_all_nodes(&self.gtpu_list6);
context_initiaized = 0;
return OGS_OK;
}
pgw_context_t* pgw_self()
@@ -915,7 +911,9 @@ pgw_sess_t *pgw_sess_add(
else
ogs_assert_if_reached();
ogs_info("UE IPv4:[%s] IPv6:[%s]",
ogs_info("UE IMSI:[%s] APN:[%s] IPv4:[%s] IPv6:[%s]",
sess->imsi_bcd,
apn,
sess->ipv4 ? INET_NTOP(&sess->ipv4->addr, buf1) : "",
sess->ipv6 ? INET6_NTOP(&sess->ipv6->addr, buf2) : "");

View File

@@ -193,8 +193,8 @@ ED3(uint8_t spare:2;,
pgw_bearer_t *bearer;
} pgw_pf_t;
int pgw_context_init(void);
int pgw_context_final(void);
void pgw_context_init(void);
void pgw_context_final(void);
pgw_context_t *pgw_self(void);
int pgw_context_parse_config(void);

View File

@@ -32,9 +32,6 @@ void pgw_event_final(void);
pgw_event_t *pgw_event_new(pgw_event_e id);
void pgw_event_free(pgw_event_t *e);
#define pgw_event_send(__ptr_e) \
ogs_assert(ogs_queue_push(pgw_self()->queue, ((__ptr_e))) == OGS_OK)
const char *pgw_event_get_name(pgw_event_t *e);
#ifdef __cplusplus

View File

@@ -712,14 +712,21 @@ out:
e->gxbuf = gxbuf;
e->xact_index = xact->index;
e->gtpbuf = gtpbuf;
pgw_event_send(e);
ogs_pollset_notify(pgw_self()->pollset);
rv = ogs_queue_push(pgw_self()->queue, e);
if (rv != OGS_OK) {
ogs_error("ogs_queue_push() failed:%d", (int)rv);
gx_message_free(gx_message);
ogs_pkbuf_free(e->gxbuf);
ogs_pkbuf_free(e->gtpbuf);
pgw_event_free(e);
} else {
ogs_pollset_notify(pgw_self()->pollset);
}
}
else
{
gx_message_free(gx_message);
ogs_pkbuf_free(gxbuf);
ogs_pkbuf_free(gtpbuf);
}
@@ -942,8 +949,15 @@ static int pgw_gx_rar_cb( struct msg **msg, struct avp *avp,
e->sess_index = sess->index;
e->gxbuf = gxbuf;
pgw_event_send(e);
ogs_pollset_notify(pgw_self()->pollset);
rv = ogs_queue_push(pgw_self()->queue, e);
if (rv != OGS_OK) {
ogs_error("ogs_queue_push() failed:%d", (int)rv);
gx_message_free(gx_message);
ogs_pkbuf_free(e->gxbuf);
pgw_event_free(e);
} else {
ogs_pollset_notify(pgw_self()->pollset);
}
/* Set the Auth-Application-Id AVP */
ret = fd_msg_avp_new(fd_auth_application_id, 0, &avp);

View File

@@ -94,7 +94,12 @@ static void _gtpv2_c_recv_cb(short when, ogs_socket_t fd, void *data)
ogs_assert(e);
e->gtpbuf = pkbuf;
pgw_event_send(e);
rv = ogs_queue_push(pgw_self()->queue, e);
if (rv != OGS_OK) {
ogs_error("ogs_queue_push() failed:%d", (int)rv);
ogs_pkbuf_free(e->gtpbuf);
pgw_event_free(e);
}
}
static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)

View File

@@ -16,7 +16,10 @@ int pgw_initialize()
{
int rv;
rv = pgw_context_init();
pgw_context_init();
pgw_event_init();
rv = gtp_xact_init(pgw_self()->timer_mgr);
if (rv != OGS_OK) return rv;
rv = pgw_context_parse_config();
@@ -61,9 +64,6 @@ static void pgw_main(void *data)
ogs_fsm_t pgw_sm;
int rv;
pgw_event_init();
gtp_xact_init(pgw_self()->timer_mgr);
ogs_fsm_create(&pgw_sm, pgw_state_initial, pgw_state_final);
ogs_fsm_init(&pgw_sm, 0);

View File

@@ -1,3 +1,6 @@
#define _DEFAULT_SOURCE 1
#define _BSD_SOURCE 1
#include "base/base.h"
#if HAVE_NETINET_IP_H

View File

@@ -21,7 +21,7 @@ static OGS_POOL(sgw_tunnel_pool, sgw_tunnel_t);
static int context_initialized = 0;
int sgw_context_init()
void sgw_context_init()
{
ogs_assert(context_initialized == 0);
@@ -48,11 +48,9 @@ int sgw_context_init()
self.imsi_ue_hash = ogs_hash_make();
context_initialized = 1;
return OGS_OK;
}
int sgw_context_final()
void sgw_context_final()
{
ogs_assert(context_initialized == 1);
@@ -78,8 +76,6 @@ int sgw_context_final()
ogs_sock_remove_all_nodes(&self.gtpu_list6);
context_initialized = 0;
return OGS_OK;
}
sgw_context_t* sgw_self()

View File

@@ -129,8 +129,8 @@ typedef struct _sgw_tunnel_t {
gtp_node_t *gnode;
} sgw_tunnel_t;
int sgw_context_init(void);
int sgw_context_final(void);
void sgw_context_init(void);
void sgw_context_final(void);
sgw_context_t* sgw_self(void);
int sgw_context_parse_config(void);

View File

@@ -32,9 +32,6 @@ void sgw_event_final(void);
sgw_event_t *sgw_event_new(sgw_event_e id);
void sgw_event_free(sgw_event_t *e);
#define sgw_event_send(__ptr_e) \
ogs_assert(ogs_queue_push(sgw_self()->queue, ((__ptr_e))) == OGS_OK)
const char *sgw_event_get_name(sgw_event_t *e);
#ifdef __cplusplus

View File

@@ -29,17 +29,18 @@ static void _gtpv2_c_recv_cb(short when, ogs_socket_t fd, void *data)
teid = ntohl(gtp_h->teid);
if (SGW_S5C_TEID(teid))
{
e = sgw_event_new(SGW_EVT_S5C_MESSAGE);
}
else
{
e = sgw_event_new(SGW_EVT_S11_MESSAGE);
}
ogs_assert(e);
e->pkbuf = pkbuf;
sgw_event_send(e);
rv = ogs_queue_push(sgw_self()->queue, e);
if (rv != OGS_OK) {
ogs_error("ogs_queue_push() failed:%d", (int)rv);
ogs_pkbuf_free(e->pkbuf);
sgw_event_free(e);
}
}
static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
@@ -206,7 +207,11 @@ static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
e = sgw_event_new(SGW_EVT_LO_DLDATA_NOTI);
ogs_assert(e);
e->bearer = bearer;
sgw_event_send(e);
rv = ogs_queue_push(sgw_self()->queue, e);
if (rv != OGS_OK) {
ogs_error("ogs_queue_push() failed:%d", (int)rv);
sgw_event_free(e);
}
SGW_SET_UE_STATE(sgw_ue, SGW_DL_NOTI_SENT);
}

View File

@@ -14,7 +14,10 @@ int sgw_initialize()
{
int rv;
rv = sgw_context_init();
sgw_context_init();
sgw_event_init();
rv = gtp_xact_init(sgw_self()->timer_mgr);
if (rv != OGS_OK) return rv;
rv = sgw_context_parse_config();
@@ -51,9 +54,6 @@ static void sgw_main(void *data)
ogs_fsm_t sgw_sm;
int rv;
sgw_event_init();
gtp_xact_init(sgw_self()->timer_mgr);
ogs_fsm_create(&sgw_sm, sgw_state_initial, sgw_state_final);
ogs_fsm_init(&sgw_sm, 0);

View File

@@ -369,8 +369,6 @@ static void attach_test1(abts_case *tc, void *data)
ABTS_PTR_NOTNULL(tc, recvbuf);
ogs_pkbuf_free(recvbuf);
ogs_msleep(300);
/* Send Detach Request */
rv = tests1ap_build_detach_request(&sendbuf, msgindex);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
@@ -444,6 +442,7 @@ static void attach_test1(abts_case *tc, void *data)
rv = testenb_gtpu_close(gtpu);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
ogs_msleep(300);
return;
#if IT_WILL_BE_REMOVED
@@ -706,8 +705,6 @@ static void attach_test2(abts_case *tc, void *data)
ABTS_PTR_NOTNULL(tc, recvbuf);
ogs_pkbuf_free(recvbuf);
ogs_msleep(300);
/*****************************************************************
* Attach Request : IMSI, Integrity Protected, MAC Matched
* Send Initial-UE Message + Attach Request + PDN Connectivity */
@@ -751,8 +748,6 @@ static void attach_test2(abts_case *tc, void *data)
/*****************************************************************
* Attach Request : Unknown IMSI, Integrity Protected
* Send Initial-UE Message + Attach Request + PDN Connectivity */
ogs_msleep(300);
rv = tests1ap_build_initial_ue_msg(&sendbuf, msgindex+2);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_s1ap_send(sock, sendbuf);
@@ -815,6 +810,8 @@ static void attach_test2(abts_case *tc, void *data)
/* eNB disonncect from MME */
rv = testenb_s1ap_close(sock);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
ogs_msleep(300);
}
/**************************************************************
@@ -1350,6 +1347,8 @@ static void attach_test4(abts_case *tc, void *data)
/* eNB disonncect from SGW */
rv = testenb_gtpu_close(gtpu);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
ogs_msleep(300);
}
static void attach_test5(abts_case *tc, void *data)
@@ -1687,6 +1686,8 @@ static void attach_test5(abts_case *tc, void *data)
/* eNB disonncect from MME */
rv = testenb_s1ap_close(sock);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
ogs_msleep(300);
}
abts_suite *test_attach(abts_suite *suite)

View File

@@ -313,18 +313,18 @@ static void handover_test1(abts_case *tc, void *data)
mongoc_collection_destroy(collection);
/* Two eNB disonncect from MME */
rv = testenb_s1ap_close(sock1);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_s1ap_close(sock2);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* eNB disonncect from SGW */
rv = testenb_gtpu_close(gtpu2);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_gtpu_close(gtpu1);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_gtpu_close(gtpu2);
/* Two eNB disonncect from MME */
rv = testenb_s1ap_close(sock2);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_s1ap_close(sock1);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
ogs_msleep(300);

View File

@@ -229,8 +229,6 @@ static void test1_func(abts_case *tc, void *data)
ABTS_TRUE(tc, memcmp(recvbuf->data+32, tmp+32, 20) == 0);
ogs_pkbuf_free(recvbuf);
ogs_msleep(300);
/* Send GTP-U ICMP Packet */
rv = testgtpu_build_ping(&sendbuf, "45.45.0.2", "45.45.0.1");
ABTS_INT_EQUAL(tc, OGS_OK, rv);
@@ -242,16 +240,6 @@ static void test1_func(abts_case *tc, void *data)
ABTS_PTR_NOTNULL(tc, recvbuf);
ogs_pkbuf_free(recvbuf);
ogs_msleep(300);
/* eNB disonncect from MME */
rv = testenb_s1ap_close(sock);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* eNB disonncect from SGW */
rv = testenb_gtpu_close(gtpu);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/********** Remove Subscriber in Database */
doc = BCON_NEW("imsi", BCON_UTF8("310014987654004"));
ABTS_PTR_NOTNULL(tc, doc);
@@ -261,8 +249,6 @@ static void test1_func(abts_case *tc, void *data)
mongoc_collection_destroy(collection);
ogs_msleep(300);
/* eNB disonncect from MME */
rv = testenb_s1ap_close(sock);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
@@ -271,7 +257,7 @@ static void test1_func(abts_case *tc, void *data)
rv = testenb_gtpu_close(gtpu);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
return;
ogs_msleep(300);
}
abts_suite *test_mnc3(abts_suite *suite)

View File

@@ -74,12 +74,8 @@ int test_initialize(app_param_t *param, int argc, const char *const argv[])
ogs_error("app_will_initialize() failed");
return OGS_ERROR;
}
rv = mme_context_init();
if (rv != OGS_OK)
{
ogs_error("mme_context_init() failed");
return OGS_ERROR;
}
mme_context_init();
app_did_initialize();
return rv;

View File

@@ -111,6 +111,7 @@ int main(int argc, const char **argv)
abts_init(argc, argv);
memset(&param, 0, sizeof(param));
for (i = 1; i < argc; i++) {
/* abts_init(argc, argv) handles the following options */
if (!strcmp(argv[i], "-v")) continue;
@@ -154,7 +155,6 @@ int main(int argc, const char **argv)
ogs_core()->log.level = OGS_LOG_ERROR;
test_initialize(&param, argc, argv);
for (i = 0; alltests[i].func; i++)
{
suite = alltests[i].func(suite);

View File

@@ -59,7 +59,8 @@ int test_app_initialize(app_param_t *param)
if (pcrf_sem1) ogs_proc_mutex_delete(pcrf_sem1);
if (pcrf_sem2) ogs_proc_mutex_delete(pcrf_sem2);
app_did_terminate();
context_final();
ogs_core_finalize();
_exit(EXIT_SUCCESS);
}
@@ -104,7 +105,8 @@ int test_app_initialize(app_param_t *param)
if (pgw_sem1) ogs_proc_mutex_delete(pgw_sem1);
if (pgw_sem2) ogs_proc_mutex_delete(pgw_sem2);
app_did_terminate();
context_final();
ogs_core_finalize();
_exit(EXIT_SUCCESS);
}
@@ -151,7 +153,8 @@ int test_app_initialize(app_param_t *param)
if (sgw_sem1) ogs_proc_mutex_delete(sgw_sem1);
if (sgw_sem2) ogs_proc_mutex_delete(sgw_sem2);
app_did_terminate();
context_final();
ogs_core_finalize();
_exit(EXIT_SUCCESS);
}
@@ -199,7 +202,8 @@ int test_app_initialize(app_param_t *param)
if (hss_sem1) ogs_proc_mutex_delete(hss_sem1);
if (hss_sem2) ogs_proc_mutex_delete(hss_sem2);
app_did_terminate();
context_final();
ogs_core_finalize();
_exit(EXIT_SUCCESS);
}
@@ -248,7 +252,8 @@ int test_app_initialize(app_param_t *param)
if (mme_sem1) ogs_proc_mutex_delete(mme_sem1);
if (mme_sem2) ogs_proc_mutex_delete(mme_sem2);
app_did_terminate();
context_final();
ogs_core_finalize();
_exit(EXIT_SUCCESS);
}