Rename GTPv2C specifics to gtp2 prefix (#1485)

In the past only GTPv2C was supported, and had the "gtp" generic prefix.
Later on, GTPv1C support was added, and "gtp1" prefix was used.
Let's move GTPv2C specific bits to have "gtp2" prefix too, and leave
"gtp" prefix for generic stuff among different GTP versions.
This commit is contained in:
Pau Espin 2022-04-13 00:07:39 +02:00 committed by GitHub
parent 8c22d8a20c
commit e3da7c9934
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
94 changed files with 4319 additions and 4321 deletions

View File

@ -548,7 +548,7 @@ void ogs_gtp_node_free(ogs_gtp_node_t *node)
} }
ogs_gtp_node_t *ogs_gtp_node_add_by_f_teid( ogs_gtp_node_t *ogs_gtp_node_add_by_f_teid(
ogs_list_t *list, ogs_gtp_f_teid_t *f_teid, uint16_t port) ogs_list_t *list, ogs_gtp2_f_teid_t *f_teid, uint16_t port)
{ {
int rv; int rv;
ogs_gtp_node_t *node = NULL; ogs_gtp_node_t *node = NULL;
@ -558,7 +558,7 @@ ogs_gtp_node_t *ogs_gtp_node_add_by_f_teid(
ogs_assert(f_teid); ogs_assert(f_teid);
ogs_assert(port); ogs_assert(port);
rv = ogs_gtp_f_teid_to_sockaddr(f_teid, port, &addr); rv = ogs_gtp2_f_teid_to_sockaddr(f_teid, port, &addr);
ogs_expect_or_return_val(rv == OGS_OK, NULL); ogs_expect_or_return_val(rv == OGS_OK, NULL);
rv = ogs_filter_ip_version( rv = ogs_filter_ip_version(
@ -576,7 +576,7 @@ ogs_gtp_node_t *ogs_gtp_node_add_by_f_teid(
node = ogs_gtp_node_new(addr); node = ogs_gtp_node_new(addr);
ogs_assert(node); ogs_assert(node);
rv = ogs_gtp_f_teid_to_ip(f_teid, &node->ip); rv = ogs_gtp2_f_teid_to_ip(f_teid, &node->ip);
ogs_expect_or_return_val(rv == OGS_OK, NULL); ogs_expect_or_return_val(rv == OGS_OK, NULL);
ogs_list_add(list, node); ogs_list_add(list, node);
@ -637,7 +637,7 @@ ogs_gtp_node_t *ogs_gtp_node_find_by_addr(
} }
ogs_gtp_node_t *ogs_gtp_node_find_by_f_teid( ogs_gtp_node_t *ogs_gtp_node_find_by_f_teid(
ogs_list_t *list, ogs_gtp_f_teid_t *f_teid) ogs_list_t *list, ogs_gtp2_f_teid_t *f_teid)
{ {
int rv; int rv;
ogs_gtp_node_t *node = NULL; ogs_gtp_node_t *node = NULL;
@ -646,7 +646,7 @@ ogs_gtp_node_t *ogs_gtp_node_find_by_f_teid(
ogs_assert(list); ogs_assert(list);
ogs_assert(f_teid); ogs_assert(f_teid);
rv = ogs_gtp_f_teid_to_ip(f_teid, &ip); rv = ogs_gtp2_f_teid_to_ip(f_teid, &ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
ogs_list_for_each(list, node) { ogs_list_for_each(list, node) {

View File

@ -92,7 +92,7 @@ ogs_gtp_node_t *ogs_gtp_node_new(ogs_sockaddr_t *sa_list);
void ogs_gtp_node_free(ogs_gtp_node_t *node); void ogs_gtp_node_free(ogs_gtp_node_t *node);
ogs_gtp_node_t *ogs_gtp_node_add_by_f_teid( ogs_gtp_node_t *ogs_gtp_node_add_by_f_teid(
ogs_list_t *list, ogs_gtp_f_teid_t *f_teid, uint16_t port); ogs_list_t *list, ogs_gtp2_f_teid_t *f_teid, uint16_t port);
ogs_gtp_node_t *ogs_gtp_node_add_by_addr( ogs_gtp_node_t *ogs_gtp_node_add_by_addr(
ogs_list_t *list, ogs_sockaddr_t *addr); ogs_list_t *list, ogs_sockaddr_t *addr);
void ogs_gtp_node_remove(ogs_list_t *list, ogs_gtp_node_t *node); void ogs_gtp_node_remove(ogs_list_t *list, ogs_gtp_node_t *node);
@ -101,7 +101,7 @@ void ogs_gtp_node_remove_all(ogs_list_t *list);
ogs_gtp_node_t *ogs_gtp_node_find_by_addr( ogs_gtp_node_t *ogs_gtp_node_find_by_addr(
ogs_list_t *list, ogs_sockaddr_t *addr); ogs_list_t *list, ogs_sockaddr_t *addr);
ogs_gtp_node_t *ogs_gtp_node_find_by_f_teid( ogs_gtp_node_t *ogs_gtp_node_find_by_f_teid(
ogs_list_t *list, ogs_gtp_f_teid_t *f_teid); ogs_list_t *list, ogs_gtp2_f_teid_t *f_teid);
ogs_gtp_node_t *ogs_gtp_node_add_by_ip( ogs_gtp_node_t *ogs_gtp_node_add_by_ip(
ogs_list_t *list, ogs_ip_t *ip, uint16_t port); ogs_list_t *list, ogs_ip_t *ip, uint16_t port);

View File

@ -21,14 +21,14 @@
int ogs_gtpu_header_len(ogs_pkbuf_t *pkbuf) int ogs_gtpu_header_len(ogs_pkbuf_t *pkbuf)
{ {
ogs_gtp_header_t *gtp_h = NULL; ogs_gtp2_header_t *gtp_h = NULL;
uint8_t *ext_h = NULL; uint8_t *ext_h = NULL;
uint16_t len = 0; uint16_t len = 0;
ogs_assert(pkbuf); ogs_assert(pkbuf);
ogs_assert(pkbuf->data); ogs_assert(pkbuf->data);
gtp_h = (ogs_gtp_header_t *)pkbuf->data; gtp_h = (ogs_gtp2_header_t *)pkbuf->data;
len = OGS_GTPV1U_HEADER_LEN; len = OGS_GTPV1U_HEADER_LEN;
if (pkbuf->len < len) return -1; if (pkbuf->len < len) return -1;

View File

@ -192,9 +192,9 @@ int16_t ogs_gtp1_build_uli(ogs_tlv_octet_t *octet,
#define OGS_GTP_GSN_ADDRESS_IPV6_LEN OGS_IPV6_LEN #define OGS_GTP_GSN_ADDRESS_IPV6_LEN OGS_IPV6_LEN
typedef struct ogs_gtp1_gsn_addr_s { typedef struct ogs_gtp1_gsn_addr_s {
union { union {
/* OGS_GTP_F_TEID_IPV4 */ /* OGS_GTP2_F_TEID_IPV4 */
uint32_t addr; uint32_t addr;
/* OGS_GTP_F_TEID_IPV6 */ /* OGS_GTP2_F_TEID_IPV6 */
uint8_t addr6[OGS_IPV6_LEN]; uint8_t addr6[OGS_IPV6_LEN];
}; };
} __attribute__ ((packed)) ogs_gtp1_gsn_addr_t; } __attribute__ ((packed)) ogs_gtp1_gsn_addr_t;

View File

@ -19,14 +19,14 @@
#include "ogs-gtp.h" #include "ogs-gtp.h"
ogs_pkbuf_t *ogs_gtp_build_echo_request( ogs_pkbuf_t *ogs_gtp2_build_echo_request(
uint8_t type, uint8_t recovery, uint8_t features) uint8_t type, uint8_t recovery, uint8_t features)
{ {
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_echo_request_t *req = NULL; ogs_gtp2_echo_request_t *req = NULL;
req = &gtp_message.echo_request; req = &gtp_message.echo_request;
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
req->recovery.presence = 1; req->recovery.presence = 1;
req->recovery.u8 = recovery; req->recovery.u8 = recovery;
@ -35,17 +35,17 @@ ogs_pkbuf_t *ogs_gtp_build_echo_request(
req->sending_node_features.u8 = features; req->sending_node_features.u8 = features;
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *ogs_gtp_build_echo_response( ogs_pkbuf_t *ogs_gtp2_build_echo_response(
uint8_t type, uint8_t recovery, uint8_t features) uint8_t type, uint8_t recovery, uint8_t features)
{ {
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_echo_response_t *rsp = NULL; ogs_gtp2_echo_response_t *rsp = NULL;
rsp = &gtp_message.echo_response; rsp = &gtp_message.echo_response;
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
rsp->recovery.presence = 1; rsp->recovery.presence = 1;
rsp->recovery.u8 = recovery; rsp->recovery.u8 = recovery;
@ -54,10 +54,10 @@ ogs_pkbuf_t *ogs_gtp_build_echo_response(
rsp->sending_node_features.u8 = features; rsp->sending_node_features.u8 = features;
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *ogs_gtp_build_error_indication( ogs_pkbuf_t *ogs_gtp2_build_error_indication(
uint32_t teid, ogs_sockaddr_t *addr) uint32_t teid, ogs_sockaddr_t *addr)
{ {
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;

View File

@ -21,23 +21,23 @@
#error "This header cannot be included directly." #error "This header cannot be included directly."
#endif #endif
#ifndef OGS_GTP_BUILD_H #ifndef OGS_GTP2_BUILD_H
#define OGS_GTP_BUILD_H #define OGS_GTP2_BUILD_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
ogs_pkbuf_t *ogs_gtp_build_echo_request( ogs_pkbuf_t *ogs_gtp2_build_echo_request(
uint8_t type, uint8_t recovery, uint8_t features); uint8_t type, uint8_t recovery, uint8_t features);
ogs_pkbuf_t *ogs_gtp_build_echo_response( ogs_pkbuf_t *ogs_gtp2_build_echo_response(
uint8_t type, uint8_t recovery, uint8_t features); uint8_t type, uint8_t recovery, uint8_t features);
ogs_pkbuf_t *ogs_gtp_build_error_indication( ogs_pkbuf_t *ogs_gtp2_build_error_indication(
uint32_t teid, ogs_sockaddr_t *addr); uint32_t teid, ogs_sockaddr_t *addr);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* OGS_GTP_BUILD_H */ #endif /* OGS_GTP2_BUILD_H */

View File

@ -19,8 +19,8 @@
#include "ogs-gtp.h" #include "ogs-gtp.h"
int ogs_gtp_f_teid_to_sockaddr( int ogs_gtp2_f_teid_to_sockaddr(
ogs_gtp_f_teid_t *f_teid, uint16_t port, ogs_sockaddr_t **list) ogs_gtp2_f_teid_t *f_teid, uint16_t port, ogs_sockaddr_t **list)
{ {
ogs_sockaddr_t *addr = NULL, *addr6 = NULL; ogs_sockaddr_t *addr = NULL, *addr6 = NULL;
@ -64,8 +64,8 @@ int ogs_gtp_f_teid_to_sockaddr(
return OGS_OK; return OGS_OK;
} }
int ogs_gtp_sockaddr_to_f_teid(ogs_sockaddr_t *addr, ogs_sockaddr_t *addr6, int ogs_gtp2_sockaddr_to_f_teid(ogs_sockaddr_t *addr, ogs_sockaddr_t *addr6,
ogs_gtp_f_teid_t *f_teid, int *len) ogs_gtp2_f_teid_t *f_teid, int *len)
{ {
ogs_assert(f_teid); ogs_assert(f_teid);
@ -74,17 +74,17 @@ int ogs_gtp_sockaddr_to_f_teid(ogs_sockaddr_t *addr, ogs_sockaddr_t *addr6,
f_teid->both.addr = addr->sin.sin_addr.s_addr; f_teid->both.addr = addr->sin.sin_addr.s_addr;
f_teid->ipv6 = 1; f_teid->ipv6 = 1;
memcpy(f_teid->both.addr6, addr6->sin6.sin6_addr.s6_addr, OGS_IPV6_LEN); memcpy(f_teid->both.addr6, addr6->sin6.sin6_addr.s6_addr, OGS_IPV6_LEN);
*len = OGS_GTP_F_TEID_IPV4V6_LEN; *len = OGS_GTP2_F_TEID_IPV4V6_LEN;
} else if (addr) { } else if (addr) {
f_teid->ipv4 = 1; f_teid->ipv4 = 1;
f_teid->ipv6 = 0; f_teid->ipv6 = 0;
f_teid->addr = addr->sin.sin_addr.s_addr; f_teid->addr = addr->sin.sin_addr.s_addr;
*len = OGS_GTP_F_TEID_IPV4_LEN; *len = OGS_GTP2_F_TEID_IPV4_LEN;
} else if (addr6) { } else if (addr6) {
f_teid->ipv4 = 0; f_teid->ipv4 = 0;
f_teid->ipv6 = 1; f_teid->ipv6 = 1;
memcpy(f_teid->addr6, addr6->sin6.sin6_addr.s6_addr, OGS_IPV6_LEN); memcpy(f_teid->addr6, addr6->sin6.sin6_addr.s6_addr, OGS_IPV6_LEN);
*len = OGS_GTP_F_TEID_IPV6_LEN; *len = OGS_GTP2_F_TEID_IPV6_LEN;
} else { } else {
ogs_error("No IPv4 or IPv6"); ogs_error("No IPv4 or IPv6");
return OGS_ERROR; return OGS_ERROR;
@ -93,7 +93,7 @@ int ogs_gtp_sockaddr_to_f_teid(ogs_sockaddr_t *addr, ogs_sockaddr_t *addr6,
return OGS_OK; return OGS_OK;
} }
int ogs_gtp_f_teid_to_ip(ogs_gtp_f_teid_t *f_teid, ogs_ip_t *ip) int ogs_gtp2_f_teid_to_ip(ogs_gtp2_f_teid_t *f_teid, ogs_ip_t *ip)
{ {
ogs_assert(ip); ogs_assert(ip);
ogs_assert(f_teid); ogs_assert(f_teid);
@ -121,7 +121,7 @@ int ogs_gtp_f_teid_to_ip(ogs_gtp_f_teid_t *f_teid, ogs_ip_t *ip)
return OGS_OK; return OGS_OK;
} }
int ogs_gtp_ip_to_f_teid(ogs_ip_t *ip, ogs_gtp_f_teid_t *f_teid, int *len) int ogs_gtp2_ip_to_f_teid(ogs_ip_t *ip, ogs_gtp2_f_teid_t *f_teid, int *len)
{ {
ogs_assert(ip); ogs_assert(ip);
ogs_assert(f_teid); ogs_assert(f_teid);
@ -132,13 +132,13 @@ int ogs_gtp_ip_to_f_teid(ogs_ip_t *ip, ogs_gtp_f_teid_t *f_teid, int *len)
if (f_teid->ipv4 && f_teid->ipv6) { if (f_teid->ipv4 && f_teid->ipv6) {
f_teid->both.addr = ip->addr; f_teid->both.addr = ip->addr;
memcpy(f_teid->both.addr6, ip->addr6, OGS_IPV6_LEN); memcpy(f_teid->both.addr6, ip->addr6, OGS_IPV6_LEN);
*len = OGS_GTP_F_TEID_IPV4V6_LEN; *len = OGS_GTP2_F_TEID_IPV4V6_LEN;
} else if (f_teid->ipv4) { } else if (f_teid->ipv4) {
f_teid->addr = ip->addr; f_teid->addr = ip->addr;
*len = OGS_GTP_F_TEID_IPV4_LEN; *len = OGS_GTP2_F_TEID_IPV4_LEN;
} else if (f_teid->ipv6) { } else if (f_teid->ipv6) {
memcpy(f_teid->addr6, ip->addr6, OGS_IPV6_LEN); memcpy(f_teid->addr6, ip->addr6, OGS_IPV6_LEN);
*len = OGS_GTP_F_TEID_IPV6_LEN; *len = OGS_GTP2_F_TEID_IPV6_LEN;
} else { } else {
ogs_error("No IPv4 or IPv6"); ogs_error("No IPv4 or IPv6");
return OGS_ERROR; return OGS_ERROR;
@ -147,7 +147,7 @@ int ogs_gtp_ip_to_f_teid(ogs_ip_t *ip, ogs_gtp_f_teid_t *f_teid, int *len)
return OGS_OK; return OGS_OK;
} }
int ogs_gtp_paa_to_ip(ogs_paa_t *paa, ogs_ip_t *ip) int ogs_gtp2_paa_to_ip(ogs_paa_t *paa, ogs_ip_t *ip)
{ {
ogs_assert(paa); ogs_assert(paa);
ogs_assert(ip); ogs_assert(ip);

View File

@ -21,21 +21,21 @@
#error "This header cannot be included directly." #error "This header cannot be included directly."
#endif #endif
#ifndef OGS_GTP_CONV_H #ifndef OGS_GTP2_CONV_H
#define OGS_GTP_CONV_H #define OGS_GTP2_CONV_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
int ogs_gtp_f_teid_to_sockaddr( int ogs_gtp2_f_teid_to_sockaddr(
ogs_gtp_f_teid_t *f_teid, uint16_t port, ogs_sockaddr_t **list); ogs_gtp2_f_teid_t *f_teid, uint16_t port, ogs_sockaddr_t **list);
int ogs_gtp_sockaddr_to_f_teid(ogs_sockaddr_t *addr, ogs_sockaddr_t *addr6, int ogs_gtp2_sockaddr_to_f_teid(ogs_sockaddr_t *addr, ogs_sockaddr_t *addr6,
ogs_gtp_f_teid_t *f_teid, int *len); ogs_gtp2_f_teid_t *f_teid, int *len);
int ogs_gtp_f_teid_to_ip(ogs_gtp_f_teid_t *f_teid, ogs_ip_t *ip); int ogs_gtp2_f_teid_to_ip(ogs_gtp2_f_teid_t *f_teid, ogs_ip_t *ip);
int ogs_gtp_ip_to_f_teid(ogs_ip_t *ip, ogs_gtp_f_teid_t *f_teid, int *len); int ogs_gtp2_ip_to_f_teid(ogs_ip_t *ip, ogs_gtp2_f_teid_t *f_teid, int *len);
int ogs_gtp_paa_to_ip(ogs_paa_t *paa, ogs_ip_t *ip); int ogs_gtp2_paa_to_ip(ogs_paa_t *paa, ogs_ip_t *ip);
#ifdef __cplusplus #ifdef __cplusplus
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -19,16 +19,16 @@
#include "ogs-gtp.h" #include "ogs-gtp.h"
int ogs_gtp_send_user_plane( int ogs_gtp2_send_user_plane(
ogs_gtp_node_t *gnode, ogs_gtp_node_t *gnode,
ogs_gtp_header_t *gtp_hdesc, ogs_gtp_extension_header_t *ext_hdesc, ogs_gtp2_header_t *gtp_hdesc, ogs_gtp2_extension_header_t *ext_hdesc,
ogs_pkbuf_t *pkbuf) ogs_pkbuf_t *pkbuf)
{ {
char buf[OGS_ADDRSTRLEN]; char buf[OGS_ADDRSTRLEN];
int rv; int rv;
ogs_gtp_header_t *gtp_h = NULL; ogs_gtp2_header_t *gtp_h = NULL;
ogs_gtp_extension_header_t *ext_h = NULL; ogs_gtp2_extension_header_t *ext_h = NULL;
uint8_t flags; uint8_t flags;
uint8_t gtp_hlen = 0; uint8_t gtp_hlen = 0;
@ -53,7 +53,7 @@ int ogs_gtp_send_user_plane(
ogs_pkbuf_push(pkbuf, gtp_hlen); ogs_pkbuf_push(pkbuf, gtp_hlen);
/* Fill GTP Header */ /* Fill GTP Header */
gtp_h = (ogs_gtp_header_t *)pkbuf->data; gtp_h = (ogs_gtp2_header_t *)pkbuf->data;
ogs_assert(gtp_h); ogs_assert(gtp_h);
memset(gtp_h, 0, gtp_hlen); memset(gtp_h, 0, gtp_hlen);
@ -90,24 +90,24 @@ int ogs_gtp_send_user_plane(
/* Fill Extention Header */ /* Fill Extention Header */
if (gtp_h->flags & OGS_GTPU_FLAGS_E) { if (gtp_h->flags & OGS_GTPU_FLAGS_E) {
ext_h = (ogs_gtp_extension_header_t *) ext_h = (ogs_gtp2_extension_header_t *)
(pkbuf->data + OGS_GTPV1U_HEADER_LEN); (pkbuf->data + OGS_GTPV1U_HEADER_LEN);
ogs_assert(ext_h); ogs_assert(ext_h);
if (ext_hdesc->qos_flow_identifier) { if (ext_hdesc->qos_flow_identifier) {
/* 5G Core */ /* 5G Core */
ext_h->type = OGS_GTP_EXTENSION_HEADER_TYPE_PDU_SESSION_CONTAINER; ext_h->type = OGS_GTP2_EXTENSION_HEADER_TYPE_PDU_SESSION_CONTAINER;
ext_h->len = 1; ext_h->len = 1;
ext_h->pdu_type = ext_hdesc->pdu_type; ext_h->pdu_type = ext_hdesc->pdu_type;
ext_h->qos_flow_identifier = ext_hdesc->qos_flow_identifier; ext_h->qos_flow_identifier = ext_hdesc->qos_flow_identifier;
ext_h->next_type = ext_h->next_type =
OGS_GTP_EXTENSION_HEADER_TYPE_NO_MORE_EXTENSION_HEADERS; OGS_GTP2_EXTENSION_HEADER_TYPE_NO_MORE_EXTENSION_HEADERS;
} else { } else {
/* EPC */ /* EPC */
ext_h->type = ext_hdesc->type; ext_h->type = ext_hdesc->type;
ext_h->len = 1; ext_h->len = 1;
ext_h->next_type = ext_h->next_type =
OGS_GTP_EXTENSION_HEADER_TYPE_NO_MORE_EXTENSION_HEADERS; OGS_GTP2_EXTENSION_HEADER_TYPE_NO_MORE_EXTENSION_HEADERS;
} }
} }
@ -126,17 +126,17 @@ int ogs_gtp_send_user_plane(
return rv; return rv;
} }
ogs_pkbuf_t *ogs_gtp_handle_echo_req(ogs_pkbuf_t *pkb) ogs_pkbuf_t *ogs_gtp2_handle_echo_req(ogs_pkbuf_t *pkb)
{ {
ogs_gtp_header_t *gtph = NULL; ogs_gtp2_header_t *gtph = NULL;
ogs_pkbuf_t *pkb_resp = NULL; ogs_pkbuf_t *pkb_resp = NULL;
ogs_gtp_header_t *gtph_resp = NULL; ogs_gtp2_header_t *gtph_resp = NULL;
uint16_t length; uint16_t length;
int idx; int idx;
ogs_assert(pkb); ogs_assert(pkb);
gtph = (ogs_gtp_header_t *)pkb->data; gtph = (ogs_gtp2_header_t *)pkb->data;
/* Check GTP version. Now only support GTPv1(version = 1) */ /* Check GTP version. Now only support GTPv1(version = 1) */
if ((gtph->flags >> 5) != 1) { if ((gtph->flags >> 5) != 1) {
return NULL; return NULL;
@ -151,7 +151,7 @@ ogs_pkbuf_t *ogs_gtp_handle_echo_req(ogs_pkbuf_t *pkb)
100 /* enough for ECHO_RSP; use smaller buffer */); 100 /* enough for ECHO_RSP; use smaller buffer */);
ogs_expect_or_return_val(pkb_resp, NULL); ogs_expect_or_return_val(pkb_resp, NULL);
ogs_pkbuf_put(pkb_resp, 100); ogs_pkbuf_put(pkb_resp, 100);
gtph_resp = (ogs_gtp_header_t *)pkb_resp->data; gtph_resp = (ogs_gtp2_header_t *)pkb_resp->data;
/* reply back immediately */ /* reply back immediately */
gtph_resp->flags = (1 << 5); /* set version */ gtph_resp->flags = (1 << 5); /* set version */
@ -202,53 +202,53 @@ void ogs_gtp2_send_error_message(
ogs_gtp_xact_t *xact, uint32_t teid, uint8_t type, uint8_t cause_value) ogs_gtp_xact_t *xact, uint32_t teid, uint8_t type, uint8_t cause_value)
{ {
int rv; int rv;
ogs_gtp_message_t errmsg; ogs_gtp2_message_t errmsg;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_gtp_tlv_cause_t *tlv = NULL; ogs_gtp2_tlv_cause_t *tlv = NULL;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
memset(&errmsg, 0, sizeof(ogs_gtp_message_t)); memset(&errmsg, 0, sizeof(ogs_gtp2_message_t));
errmsg.h.teid = teid; errmsg.h.teid = teid;
errmsg.h.type = type; errmsg.h.type = type;
switch (type) { switch (type) {
case OGS_GTP_CREATE_SESSION_RESPONSE_TYPE: case OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE:
tlv = &errmsg.create_session_response.cause; tlv = &errmsg.create_session_response.cause;
break; break;
case OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE: case OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE:
tlv = &errmsg.modify_bearer_response.cause; tlv = &errmsg.modify_bearer_response.cause;
break; break;
case OGS_GTP_DELETE_SESSION_RESPONSE_TYPE: case OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE:
tlv = &errmsg.delete_session_response.cause; tlv = &errmsg.delete_session_response.cause;
break; break;
case OGS_GTP_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE: case OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE:
tlv = &errmsg.release_access_bearers_response.cause; tlv = &errmsg.release_access_bearers_response.cause;
break; break;
case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE: case OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE:
tlv = &errmsg.downlink_data_notification_acknowledge.cause; tlv = &errmsg.downlink_data_notification_acknowledge.cause;
break; break;
case OGS_GTP_CREATE_BEARER_RESPONSE_TYPE: case OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE:
tlv = &errmsg.create_bearer_response.cause; tlv = &errmsg.create_bearer_response.cause;
break; break;
case OGS_GTP_UPDATE_BEARER_RESPONSE_TYPE: case OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE:
tlv = &errmsg.update_bearer_response.cause; tlv = &errmsg.update_bearer_response.cause;
break; break;
case OGS_GTP_DELETE_BEARER_RESPONSE_TYPE: case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE:
tlv = &errmsg.delete_bearer_response.cause; tlv = &errmsg.delete_bearer_response.cause;
break; break;
case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE: case OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
tlv = &errmsg.create_indirect_data_forwarding_tunnel_response.cause; tlv = &errmsg.create_indirect_data_forwarding_tunnel_response.cause;
break; break;
case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE: case OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
tlv = &errmsg.delete_indirect_data_forwarding_tunnel_response.cause; tlv = &errmsg.delete_indirect_data_forwarding_tunnel_response.cause;
break; break;
case OGS_GTP_MODIFY_BEARER_FAILURE_INDICATION_TYPE: case OGS_GTP2_MODIFY_BEARER_FAILURE_INDICATION_TYPE:
tlv = &errmsg.modify_bearer_failure_indication.cause; tlv = &errmsg.modify_bearer_failure_indication.cause;
break; break;
case OGS_GTP_DELETE_BEARER_FAILURE_INDICATION_TYPE: case OGS_GTP2_DELETE_BEARER_FAILURE_INDICATION_TYPE:
tlv = &errmsg.delete_bearer_failure_indication.cause; tlv = &errmsg.delete_bearer_failure_indication.cause;
break; break;
case OGS_GTP_BEARER_RESOURCE_FAILURE_INDICATION_TYPE: case OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE:
tlv = &errmsg.bearer_resource_failure_indication.cause; tlv = &errmsg.bearer_resource_failure_indication.cause;
break; break;
default: default:
@ -264,7 +264,7 @@ void ogs_gtp2_send_error_message(
tlv->len = sizeof(cause); tlv->len = sizeof(cause);
tlv->data = &cause; tlv->data = &cause;
pkbuf = ogs_gtp_build_msg(&errmsg); pkbuf = ogs_gtp2_build_msg(&errmsg);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
rv = ogs_gtp_xact_update_tx(xact, &errmsg.h, pkbuf); rv = ogs_gtp_xact_update_tx(xact, &errmsg.h, pkbuf);
@ -274,23 +274,23 @@ void ogs_gtp2_send_error_message(
ogs_expect(rv == OGS_OK); ogs_expect(rv == OGS_OK);
} }
void ogs_gtp_send_echo_request( void ogs_gtp2_send_echo_request(
ogs_gtp_node_t *gnode, uint8_t recovery, uint8_t features) ogs_gtp_node_t *gnode, uint8_t recovery, uint8_t features)
{ {
int rv; int rv;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
ogs_assert(gnode); ogs_assert(gnode);
ogs_debug("[GTP] Sending Echo Request"); ogs_debug("[GTP] Sending Echo Request");
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_ECHO_REQUEST_TYPE; h.type = OGS_GTP2_ECHO_REQUEST_TYPE;
h.teid = 0; h.teid = 0;
pkbuf = ogs_gtp_build_echo_request(h.type, recovery, features); pkbuf = ogs_gtp2_build_echo_request(h.type, recovery, features);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
xact = ogs_gtp_xact_local_create(gnode, &h, pkbuf, NULL, NULL); xact = ogs_gtp_xact_local_create(gnode, &h, pkbuf, NULL, NULL);
@ -299,22 +299,22 @@ void ogs_gtp_send_echo_request(
ogs_expect(rv == OGS_OK); ogs_expect(rv == OGS_OK);
} }
void ogs_gtp_send_echo_response(ogs_gtp_xact_t *xact, void ogs_gtp2_send_echo_response(ogs_gtp_xact_t *xact,
uint8_t recovery, uint8_t features) uint8_t recovery, uint8_t features)
{ {
int rv; int rv;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_assert(xact); ogs_assert(xact);
ogs_debug("[GTP] Sending Echo Response"); ogs_debug("[GTP] Sending Echo Response");
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_ECHO_RESPONSE_TYPE; h.type = OGS_GTP2_ECHO_RESPONSE_TYPE;
h.teid = 0; h.teid = 0;
pkbuf = ogs_gtp_build_echo_response(h.type, recovery, features); pkbuf = ogs_gtp2_build_echo_response(h.type, recovery, features);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
rv = ogs_gtp_xact_update_tx(xact, &h, pkbuf); rv = ogs_gtp_xact_update_tx(xact, &h, pkbuf);

View File

@ -30,19 +30,18 @@ extern "C" {
typedef struct ogs_gtp_xact_s ogs_gtp_xact_t; typedef struct ogs_gtp_xact_s ogs_gtp_xact_t;
int ogs_gtp2_send_user_plane(
int ogs_gtp_send_user_plane(
ogs_gtp_node_t *gnode, ogs_gtp_node_t *gnode,
ogs_gtp_header_t *gtp_hdesc, ogs_gtp_extension_header_t *ext_hdesc, ogs_gtp2_header_t *gtp_hdesc, ogs_gtp2_extension_header_t *ext_hdesc,
ogs_pkbuf_t *pkbuf); ogs_pkbuf_t *pkbuf);
ogs_pkbuf_t *ogs_gtp_handle_echo_req(ogs_pkbuf_t *pkt); ogs_pkbuf_t *ogs_gtp2_handle_echo_req(ogs_pkbuf_t *pkt);
void ogs_gtp2_send_error_message( void ogs_gtp2_send_error_message(
ogs_gtp_xact_t *xact, uint32_t teid, uint8_t type, uint8_t cause_value); ogs_gtp_xact_t *xact, uint32_t teid, uint8_t type, uint8_t cause_value);
void ogs_gtp_send_echo_request( void ogs_gtp2_send_echo_request(
ogs_gtp_node_t *gnode, uint8_t recovery, uint8_t features); ogs_gtp_node_t *gnode, uint8_t recovery, uint8_t features);
void ogs_gtp_send_echo_response(ogs_gtp_xact_t *xact, void ogs_gtp2_send_echo_response(ogs_gtp_xact_t *xact,
uint8_t recovery, uint8_t features); uint8_t recovery, uint8_t features);
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -440,8 +440,8 @@ f.write("""#if !defined(OGS_GTP_INSIDE) && !defined(OGS_GTP_COMPILATION)
#error "This header cannot be included directly." #error "This header cannot be included directly."
#endif #endif
#ifndef OGS_GTP_MESSAGE_H #ifndef OGS_GTP2_MESSAGE_H
#define OGS_GTP_MESSAGE_H #define OGS_GTP2_MESSAGE_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@ -450,12 +450,12 @@ extern "C" {
/* 5.1 General format */ /* 5.1 General format */
#define OGS_GTPV1U_HEADER_LEN 8 #define OGS_GTPV1U_HEADER_LEN 8
#define OGS_GTPV2C_HEADER_LEN 12 #define OGS_GTPV2C_HEADER_LEN 12
#define OGS_GTP_TEID_LEN 4 #define OGS_GTP2_TEID_LEN 4
typedef struct ogs_gtp_header_s { typedef struct ogs_gtp2_header_s {
union { union {
struct { struct {
#define OGS_GTP_VERSION_0 0 #define OGS_GTP2_VERSION_0 0
#define OGS_GTP_VERSION_1 1 #define OGS_GTP2_VERSION_1 1
ED4(uint8_t version:3;, ED4(uint8_t version:3;,
uint8_t piggybacked:1;, uint8_t piggybacked:1;,
uint8_t teid_presence:1;, uint8_t teid_presence:1;,
@ -482,14 +482,14 @@ typedef struct ogs_gtp_header_s {
struct { struct {
uint32_t teid; uint32_t teid;
/* sqn : 31bit ~ 8bit, spare : 7bit ~ 0bit */ /* sqn : 31bit ~ 8bit, spare : 7bit ~ 0bit */
#define OGS_GTP_XID_TO_SQN(__xid) htobe32(((__xid) << 8)) #define OGS_GTP2_XID_TO_SQN(__xid) htobe32(((__xid) << 8))
#define OGS_GTP_SQN_TO_XID(__sqn) (be32toh(__sqn) >> 8) #define OGS_GTP2_SQN_TO_XID(__sqn) (be32toh(__sqn) >> 8)
uint32_t sqn; uint32_t sqn;
}; };
/* sqn : 31bit ~ 8bit, spare : 7bit ~ 0bit */ /* sqn : 31bit ~ 8bit, spare : 7bit ~ 0bit */
uint32_t sqn_only; uint32_t sqn_only;
}; };
} __attribute__ ((packed)) ogs_gtp_header_t; } __attribute__ ((packed)) ogs_gtp2_header_t;
/* GTPv2-C message type */ /* GTPv2-C message type */
""") """)
@ -497,13 +497,13 @@ typedef struct ogs_gtp_header_s {
tmp = [(k, v["type"]) for k, v in msg_list.items()] tmp = [(k, v["type"]) for k, v in msg_list.items()]
sorted_msg_list = sorted(tmp, key=lambda tup: int(tup[1])) sorted_msg_list = sorted(tmp, key=lambda tup: int(tup[1]))
for (k, v) in sorted_msg_list: for (k, v) in sorted_msg_list:
f.write("#define OGS_GTP_" + v_upper(k) + "_TYPE " + v + "\n") f.write("#define OGS_GTP2_" + v_upper(k) + "_TYPE " + v + "\n")
f.write("\n") f.write("\n")
tmp = [(k, v["type"]) for k, v in type_list.items()] tmp = [(k, v["type"]) for k, v in type_list.items()]
sorted_type_list = sorted(tmp, key=lambda tup: int(tup[1])) sorted_type_list = sorted(tmp, key=lambda tup: int(tup[1]))
for (k, v) in sorted_type_list: for (k, v) in sorted_type_list:
f.write("#define OGS_GTP_" + v_upper(k) + "_TYPE " + v + "\n") f.write("#define OGS_GTP2_" + v_upper(k) + "_TYPE " + v + "\n")
f.write("\n") f.write("\n")
f.write("/* Information Element TLV Descriptor */\n") f.write("/* Information Element TLV Descriptor */\n")
@ -511,7 +511,7 @@ for (k, v) in sorted_type_list:
if k in group_list.keys(): if k in group_list.keys():
continue continue
for instance in range(0, int(type_list[k]["max_instance"])+1): for instance in range(0, int(type_list[k]["max_instance"])+1):
f.write("extern ogs_tlv_desc_t ogs_gtp_tlv_desc_" + v_lower(k)) f.write("extern ogs_tlv_desc_t ogs_gtp2_tlv_desc_" + v_lower(k))
f.write("_" + str(instance) + ";\n") f.write("_" + str(instance) + ";\n")
f.write("\n") f.write("\n")
@ -527,13 +527,13 @@ sorted_group_list = sorted(tmp, key=lambda tup: int(tup[1]))
f.write("/* Group Information Element TLV Descriptor */\n") f.write("/* Group Information Element TLV Descriptor */\n")
for (k, v) in sorted_group_list: for (k, v) in sorted_group_list:
for instance in range(0, int(type_list[k]["max_instance"])+1): for instance in range(0, int(type_list[k]["max_instance"])+1):
f.write("extern ogs_tlv_desc_t ogs_gtp_tlv_desc_" + v_lower(k)) f.write("extern ogs_tlv_desc_t ogs_gtp2_tlv_desc_" + v_lower(k))
f.write("_" + str(instance) + ";\n") f.write("_" + str(instance) + ";\n")
f.write("\n") f.write("\n")
f.write("/* Message Descriptor */\n") f.write("/* Message Descriptor */\n")
for (k, v) in sorted_msg_list: for (k, v) in sorted_msg_list:
f.write("extern ogs_tlv_desc_t ogs_gtp_tlv_desc_" + v_lower(k) + ";\n") f.write("extern ogs_tlv_desc_t ogs_gtp2_tlv_desc_" + v_lower(k) + ";\n")
f.write("\n") f.write("\n")
f.write("/* Structure for Information Element */\n") f.write("/* Structure for Information Element */\n")
@ -542,25 +542,25 @@ for (k, v) in sorted_type_list:
continue continue
if "size" in type_list[k]: if "size" in type_list[k]:
if type_list[k]["size"] == 1: if type_list[k]["size"] == 1:
f.write("typedef ogs_tlv_uint8_t ogs_gtp_tlv_" + v_lower(k) + "_t;\n") f.write("typedef ogs_tlv_uint8_t ogs_gtp2_tlv_" + v_lower(k) + "_t;\n")
elif type_list[k]["size"] == 2: elif type_list[k]["size"] == 2:
f.write("typedef ogs_tlv_uint16_t ogs_gtp_tlv_" + v_lower(k) + "_t;\n") f.write("typedef ogs_tlv_uint16_t ogs_gtp2_tlv_" + v_lower(k) + "_t;\n")
elif type_list[k]["size"] == 3: elif type_list[k]["size"] == 3:
f.write("typedef ogs_tlv_uint24_t ogs_gtp_tlv_" + v_lower(k) + "_t;\n") f.write("typedef ogs_tlv_uint24_t ogs_gtp2_tlv_" + v_lower(k) + "_t;\n")
elif type_list[k]["size"] == 4: elif type_list[k]["size"] == 4:
f.write("typedef ogs_tlv_uint32_t ogs_gtp_tlv_" + v_lower(k) + "_t;\n") f.write("typedef ogs_tlv_uint32_t ogs_gtp2_tlv_" + v_lower(k) + "_t;\n")
else: else:
assert False, "Unknown size = %d for key = %s" % (type_list[k]["size"], k) assert False, "Unknown size = %d for key = %s" % (type_list[k]["size"], k)
else: else:
f.write("typedef ogs_tlv_octet_t ogs_gtp_tlv_" + v_lower(k) + "_t;\n") f.write("typedef ogs_tlv_octet_t ogs_gtp2_tlv_" + v_lower(k) + "_t;\n")
f.write("\n") f.write("\n")
f.write("/* Structure for Group Information Element */\n") f.write("/* Structure for Group Information Element */\n")
for (k, v) in sorted_group_list: for (k, v) in sorted_group_list:
f.write("typedef struct ogs_gtp_tlv_" + v_lower(k) + "_s {\n") f.write("typedef struct ogs_gtp2_tlv_" + v_lower(k) + "_s {\n")
f.write(" ogs_tlv_presence_t presence;\n") f.write(" ogs_tlv_presence_t presence;\n")
for ies in group_list[k]["ies"]: for ies in group_list[k]["ies"]:
f.write(" ogs_gtp_tlv_" + v_lower(ies["ie_type"]) + "_t " + \ f.write(" ogs_gtp2_tlv_" + v_lower(ies["ie_type"]) + "_t " + \
v_lower(ies["ie_value"])) v_lower(ies["ie_value"]))
if ies["ie_type"] == "F-TEID": if ies["ie_type"] == "F-TEID":
if ies["ie_value"] == "S2b-U ePDG F-TEID": if ies["ie_value"] == "S2b-U ePDG F-TEID":
@ -572,40 +572,40 @@ for (k, v) in sorted_group_list:
f.write(" /* Instance : " + ies["instance"] + " */\n") f.write(" /* Instance : " + ies["instance"] + " */\n")
else: else:
f.write(";\n") f.write(";\n")
f.write("} ogs_gtp_tlv_" + v_lower(k) + "_t;\n") f.write("} ogs_gtp2_tlv_" + v_lower(k) + "_t;\n")
f.write("\n") f.write("\n")
f.write("/* Structure for Message */\n") f.write("/* Structure for Message */\n")
for (k, v) in sorted_msg_list: for (k, v) in sorted_msg_list:
if "ies" in msg_list[k]: if "ies" in msg_list[k]:
f.write("typedef struct ogs_gtp_" + v_lower(k) + "_s {\n") f.write("typedef struct ogs_gtp2_" + v_lower(k) + "_s {\n")
for ies in msg_list[k]["ies"]: for ies in msg_list[k]["ies"]:
if (k == 'Create Indirect Data Forwarding Tunnel Request' or k == 'Create Indirect Data Forwarding Tunnel Response') and ies["ie_value"] == 'Bearer Contexts': if (k == 'Create Indirect Data Forwarding Tunnel Request' or k == 'Create Indirect Data Forwarding Tunnel Response') and ies["ie_value"] == 'Bearer Contexts':
f.write(" ogs_gtp_tlv_" + v_lower(ies["ie_type"]) + "_t " + \ f.write(" ogs_gtp2_tlv_" + v_lower(ies["ie_type"]) + "_t " + \
v_lower(ies["ie_value"]) + "[8];\n") v_lower(ies["ie_value"]) + "[8];\n")
else: else:
f.write(" ogs_gtp_tlv_" + v_lower(ies["ie_type"]) + "_t " + \ f.write(" ogs_gtp2_tlv_" + v_lower(ies["ie_type"]) + "_t " + \
v_lower(ies["ie_value"]) + ";\n") v_lower(ies["ie_value"]) + ";\n")
f.write("} ogs_gtp_" + v_lower(k) + "_t;\n") f.write("} ogs_gtp2_" + v_lower(k) + "_t;\n")
f.write("\n") f.write("\n")
f.write("typedef struct ogs_gtp_message_s {\n") f.write("typedef struct ogs_gtp2_message_s {\n")
f.write(" ogs_gtp_header_t h;\n") f.write(" ogs_gtp2_header_t h;\n")
f.write(" union {\n") f.write(" union {\n")
for (k, v) in sorted_msg_list: for (k, v) in sorted_msg_list:
if "ies" in msg_list[k]: if "ies" in msg_list[k]:
f.write(" ogs_gtp_" + v_lower(k) + "_t " + v_lower(k) + ";\n"); f.write(" ogs_gtp2_" + v_lower(k) + "_t " + v_lower(k) + ";\n");
f.write(" };\n"); f.write(" };\n");
f.write("} ogs_gtp_message_t;\n\n") f.write("} ogs_gtp2_message_t;\n\n")
f.write("""int ogs_gtp_parse_msg(ogs_gtp_message_t *gtp_message, ogs_pkbuf_t *pkbuf); f.write("""int ogs_gtp2_parse_msg(ogs_gtp2_message_t *gtp_message, ogs_pkbuf_t *pkbuf);
ogs_pkbuf_t *ogs_gtp_build_msg(ogs_gtp_message_t *gtp_message); ogs_pkbuf_t *ogs_gtp2_build_msg(ogs_gtp2_message_t *gtp_message);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* OGS_GTP_MESSAGE_H */ #endif /* OGS_GTP2_MESSAGE_H */
""") """)
f.close() f.close()
@ -619,7 +619,7 @@ for (k, v) in sorted_type_list:
if k in group_list.keys(): if k in group_list.keys():
continue continue
for instance in range(0, int(type_list[k]["max_instance"])+1): for instance in range(0, int(type_list[k]["max_instance"])+1):
f.write("ogs_tlv_desc_t ogs_gtp_tlv_desc_%s_%d =\n" % (v_lower(k), instance)) f.write("ogs_tlv_desc_t ogs_gtp2_tlv_desc_%s_%d =\n" % (v_lower(k), instance))
f.write("{\n") f.write("{\n")
if "size" in type_list[k]: if "size" in type_list[k]:
if type_list[k]["size"] == 1: if type_list[k]["size"] == 1:
@ -635,89 +635,89 @@ for (k, v) in sorted_type_list:
else: else:
f.write(" OGS_TLV_VAR_STR,\n") f.write(" OGS_TLV_VAR_STR,\n")
f.write(" \"%s\",\n" % k) f.write(" \"%s\",\n" % k)
f.write(" OGS_GTP_%s_TYPE,\n" % v_upper(k)) f.write(" OGS_GTP2_%s_TYPE,\n" % v_upper(k))
if "size" in type_list[k]: if "size" in type_list[k]:
f.write(" %d,\n" % type_list[k]["size"]) f.write(" %d,\n" % type_list[k]["size"])
else: else:
f.write(" 0,\n") f.write(" 0,\n")
f.write(" %d,\n" % instance) f.write(" %d,\n" % instance)
f.write(" sizeof(ogs_gtp_tlv_%s_t),\n" % v_lower(k)) f.write(" sizeof(ogs_gtp2_tlv_%s_t),\n" % v_lower(k))
f.write(" { NULL }\n") f.write(" { NULL }\n")
f.write("};\n\n") f.write("};\n\n")
for (k, v) in sorted_group_list: for (k, v) in sorted_group_list:
for instance in range(0, int(type_list[k]["max_instance"])+1): for instance in range(0, int(type_list[k]["max_instance"])+1):
f.write("ogs_tlv_desc_t ogs_gtp_tlv_desc_%s_%d =\n" % (v_lower(k), instance)) f.write("ogs_tlv_desc_t ogs_gtp2_tlv_desc_%s_%d =\n" % (v_lower(k), instance))
f.write("{\n") f.write("{\n")
f.write(" OGS_TLV_COMPOUND,\n") f.write(" OGS_TLV_COMPOUND,\n")
f.write(" \"%s\",\n" % k) f.write(" \"%s\",\n" % k)
f.write(" OGS_GTP_%s_TYPE,\n" % v_upper(k)) f.write(" OGS_GTP2_%s_TYPE,\n" % v_upper(k))
f.write(" 0,\n") f.write(" 0,\n")
f.write(" %d,\n" % instance) f.write(" %d,\n" % instance)
f.write(" sizeof(ogs_gtp_tlv_%s_t),\n" % v_lower(k)) f.write(" sizeof(ogs_gtp2_tlv_%s_t),\n" % v_lower(k))
f.write(" {\n") f.write(" {\n")
for ies in group_list[k]["ies"]: for ies in group_list[k]["ies"]:
f.write(" &ogs_gtp_tlv_desc_%s_%s,\n" % (v_lower(ies["ie_type"]), v_lower(ies["instance"]))) f.write(" &ogs_gtp2_tlv_desc_%s_%s,\n" % (v_lower(ies["ie_type"]), v_lower(ies["instance"])))
f.write(" NULL,\n") f.write(" NULL,\n")
f.write(" }\n") f.write(" }\n")
f.write("};\n\n") f.write("};\n\n")
for (k, v) in sorted_msg_list: for (k, v) in sorted_msg_list:
if "ies" in msg_list[k]: if "ies" in msg_list[k]:
f.write("ogs_tlv_desc_t ogs_gtp_tlv_desc_%s =\n" % v_lower(k)) f.write("ogs_tlv_desc_t ogs_gtp2_tlv_desc_%s =\n" % v_lower(k))
f.write("{\n") f.write("{\n")
f.write(" OGS_TLV_MESSAGE,\n") f.write(" OGS_TLV_MESSAGE,\n")
f.write(" \"%s\",\n" % k) f.write(" \"%s\",\n" % k)
f.write(" 0, 0, 0, 0, {\n") f.write(" 0, 0, 0, 0, {\n")
for ies in msg_list[k]["ies"]: for ies in msg_list[k]["ies"]:
f.write(" &ogs_gtp_tlv_desc_%s_%s,\n" % (v_lower(ies["ie_type"]), v_lower(ies["instance"]))) f.write(" &ogs_gtp2_tlv_desc_%s_%s,\n" % (v_lower(ies["ie_type"]), v_lower(ies["instance"])))
if (k == 'Create Indirect Data Forwarding Tunnel Request' or k == 'Create Indirect Data Forwarding Tunnel Response') and ies["ie_value"] == 'Bearer Contexts': if (k == 'Create Indirect Data Forwarding Tunnel Request' or k == 'Create Indirect Data Forwarding Tunnel Response') and ies["ie_value"] == 'Bearer Contexts':
f.write(" &ogs_tlv_desc_more8,\n") f.write(" &ogs_tlv_desc_more8,\n")
f.write(" NULL,\n") f.write(" NULL,\n")
f.write("}};\n\n") f.write("}};\n\n")
f.write("\n") f.write("\n")
f.write("""int ogs_gtp_parse_msg(ogs_gtp_message_t *gtp_message, ogs_pkbuf_t *pkbuf) f.write("""int ogs_gtp2_parse_msg(ogs_gtp2_message_t *gtp_message, ogs_pkbuf_t *pkbuf)
{ {
int rv = OGS_ERROR; int rv = OGS_ERROR;
ogs_gtp_header_t *h = NULL; ogs_gtp2_header_t *h = NULL;
uint16_t size = 0; uint16_t size = 0;
ogs_assert(gtp_message); ogs_assert(gtp2_message);
ogs_assert(pkbuf); ogs_assert(pkbuf);
ogs_assert(pkbuf->len); ogs_assert(pkbuf->len);
h = (ogs_gtp_header_t *)pkbuf->data; h = (ogs_gtp2_header_t *)pkbuf->data;
ogs_assert(h); ogs_assert(h);
memset(gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(gtp2_message, 0, sizeof(ogs_gtp2_message_t));
if (h->teid_presence) if (h->teid_presence)
size = OGS_GTPV2C_HEADER_LEN; size = OGS_GTPV2C_HEADER_LEN;
else else
size = OGS_GTPV2C_HEADER_LEN-OGS_GTP_TEID_LEN; size = OGS_GTPV2C_HEADER_LEN-OGS_GTP2_TEID_LEN;
ogs_assert(ogs_pkbuf_pull(pkbuf, size)); ogs_assert(ogs_pkbuf_pull(pkbuf, size));
memcpy(&gtp_message->h, pkbuf->data - size, size); memcpy(&gtp2_message->h, pkbuf->data - size, size);
if (h->teid_presence) if (h->teid_presence)
gtp_message->h.teid = be32toh(gtp_message->h.teid); gtp2_message->h.teid = be32toh(gtp_message->h.teid);
if (pkbuf->len == 0) { if (pkbuf->len == 0) {
ogs_assert(ogs_pkbuf_push(pkbuf, size)); ogs_assert(ogs_pkbuf_push(pkbuf, size));
return OGS_OK; return OGS_OK;
} }
switch(gtp_message->h.type) { switch(gtp2_message->h.type) {
""") """)
for (k, v) in sorted_msg_list: for (k, v) in sorted_msg_list:
if "ies" in msg_list[k]: if "ies" in msg_list[k]:
f.write(" case OGS_GTP_%s_TYPE:\n" % v_upper(k)) f.write(" case OGS_GTP2_%s_TYPE:\n" % v_upper(k))
f.write(" rv = ogs_tlv_parse_msg(&gtp_message->%s,\n" % v_lower(k)) f.write(" rv = ogs_tlv_parse_msg(&gtp2_message->%s,\n" % v_lower(k))
f.write(" &ogs_gtp_tlv_desc_%s, pkbuf, OGS_TLV_MODE_T1_L2_I1);\n" % v_lower(k)) f.write(" &ogs_gtp2_tlv_desc_%s, pkbuf, OGS_TLV_MODE_T1_L2_I1);\n" % v_lower(k))
f.write(" break;\n") f.write(" break;\n")
f.write(""" default: f.write(""" default:
ogs_warn("Not implmeneted(type:%d)", gtp_message->h.type); ogs_warn("Not implmeneted(type:%d)", gtp2_message->h.type);
break; break;
} }
@ -728,21 +728,21 @@ f.write(""" default:
""") """)
f.write("""ogs_pkbuf_t *ogs_gtp_build_msg(ogs_gtp_message_t *gtp_message) f.write("""ogs_pkbuf_t *ogs_gtp2_build_msg(ogs_gtp2_message_t *gtp_message)
{ {
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_assert(gtp_message); ogs_assert(gtp2_message);
switch(gtp_message->h.type) { switch(gtp2_message->h.type) {
""") """)
for (k, v) in sorted_msg_list: for (k, v) in sorted_msg_list:
if "ies" in msg_list[k]: if "ies" in msg_list[k]:
f.write(" case OGS_GTP_%s_TYPE:\n" % v_upper(k)) f.write(" case OGS_GTP2_%s_TYPE:\n" % v_upper(k))
f.write(" pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_%s,\n" % v_lower(k)) f.write(" pkbuf = ogs_tlv_build_msg(&ogs_gtp2_tlv_desc_%s,\n" % v_lower(k))
f.write(" &gtp_message->%s, OGS_TLV_MODE_T1_L2_I1);\n" % v_lower(k)) f.write(" &gtp2_message->%s, OGS_TLV_MODE_T1_L2_I1);\n" % v_lower(k))
f.write(" break;\n") f.write(" break;\n")
f.write(""" default: f.write(""" default:
ogs_warn("Not implmeneted(type:%d)", gtp_message->h.type); ogs_warn("Not implmeneted(type:%d)", gtp2_message->h.type);
break; break;
} }

View File

@ -23,17 +23,17 @@
* 10.5.6.3 Protocol configuration options in 3GPP TS 24.008 */ * 10.5.6.3 Protocol configuration options in 3GPP TS 24.008 */
/* 8.15 Bearer Quality of Service (Bearer QoS) */ /* 8.15 Bearer Quality of Service (Bearer QoS) */
int16_t ogs_gtp_parse_bearer_qos( int16_t ogs_gtp2_parse_bearer_qos(
ogs_gtp_bearer_qos_t *bearer_qos, ogs_tlv_octet_t *octet) ogs_gtp2_bearer_qos_t *bearer_qos, ogs_tlv_octet_t *octet)
{ {
ogs_gtp_bearer_qos_t *source = (ogs_gtp_bearer_qos_t *)octet->data; ogs_gtp2_bearer_qos_t *source = (ogs_gtp2_bearer_qos_t *)octet->data;
int16_t size = 0; int16_t size = 0;
ogs_assert(bearer_qos); ogs_assert(bearer_qos);
ogs_assert(octet); ogs_assert(octet);
ogs_assert(octet->len == GTP_BEARER_QOS_LEN); ogs_assert(octet->len == GTP2_BEARER_QOS_LEN);
memset(bearer_qos, 0, sizeof(ogs_gtp_bearer_qos_t)); memset(bearer_qos, 0, sizeof(ogs_gtp2_bearer_qos_t));
bearer_qos->pre_emption_capability = source->pre_emption_capability; bearer_qos->pre_emption_capability = source->pre_emption_capability;
bearer_qos->priority_level = source->priority_level; bearer_qos->priority_level = source->priority_level;
@ -66,19 +66,19 @@ int16_t ogs_gtp_parse_bearer_qos(
return size; return size;
} }
int16_t ogs_gtp_build_bearer_qos(ogs_tlv_octet_t *octet, int16_t ogs_gtp2_build_bearer_qos(ogs_tlv_octet_t *octet,
ogs_gtp_bearer_qos_t *bearer_qos, void *data, int data_len) ogs_gtp2_bearer_qos_t *bearer_qos, void *data, int data_len)
{ {
ogs_gtp_bearer_qos_t target; ogs_gtp2_bearer_qos_t target;
int16_t size = 0; int16_t size = 0;
ogs_assert(bearer_qos); ogs_assert(bearer_qos);
ogs_assert(octet); ogs_assert(octet);
ogs_assert(data); ogs_assert(data);
ogs_assert(data_len >= GTP_BEARER_QOS_LEN); ogs_assert(data_len >= GTP2_BEARER_QOS_LEN);
octet->data = data; octet->data = data;
memcpy(&target, bearer_qos, sizeof(ogs_gtp_bearer_qos_t)); memcpy(&target, bearer_qos, sizeof(ogs_gtp2_bearer_qos_t));
memcpy((unsigned char *)octet->data + size, &target, 2); memcpy((unsigned char *)octet->data + size, &target, 2);
size += 2; size += 2;
@ -108,7 +108,7 @@ int16_t ogs_gtp_build_bearer_qos(ogs_tlv_octet_t *octet,
} }
/* 8.16 Flow Quality of Service (Flow QoS) */ /* 8.16 Flow Quality of Service (Flow QoS) */
uint64_t ogs_gtp_qos_to_kbps(uint8_t br, uint8_t extended, uint8_t extended2) uint64_t ogs_gtp2_qos_to_kbps(uint8_t br, uint8_t extended, uint8_t extended2)
{ {
/* /*
* Octet 12 : 00000000 * Octet 12 : 00000000
@ -198,17 +198,17 @@ uint64_t ogs_gtp_qos_to_kbps(uint8_t br, uint8_t extended, uint8_t extended2)
return 0; return 0;
} }
int16_t ogs_gtp_parse_flow_qos( int16_t ogs_gtp2_parse_flow_qos(
ogs_gtp_flow_qos_t *flow_qos, ogs_tlv_octet_t *octet) ogs_gtp2_flow_qos_t *flow_qos, ogs_tlv_octet_t *octet)
{ {
ogs_gtp_flow_qos_t *source = (ogs_gtp_flow_qos_t *)octet->data; ogs_gtp2_flow_qos_t *source = (ogs_gtp2_flow_qos_t *)octet->data;
int16_t size = 0; int16_t size = 0;
ogs_assert(flow_qos); ogs_assert(flow_qos);
ogs_assert(octet); ogs_assert(octet);
ogs_assert(octet->len == GTP_FLOW_QOS_LEN); ogs_assert(octet->len == GTP2_FLOW_QOS_LEN);
memset(flow_qos, 0, sizeof(ogs_gtp_flow_qos_t)); memset(flow_qos, 0, sizeof(ogs_gtp2_flow_qos_t));
flow_qos->qci = source->qci; flow_qos->qci = source->qci;
size++; size++;
@ -236,19 +236,19 @@ int16_t ogs_gtp_parse_flow_qos(
return size; return size;
} }
int16_t ogs_gtp_build_flow_qos(ogs_tlv_octet_t *octet, int16_t ogs_gtp2_build_flow_qos(ogs_tlv_octet_t *octet,
ogs_gtp_flow_qos_t *flow_qos, void *data, int data_len) ogs_gtp2_flow_qos_t *flow_qos, void *data, int data_len)
{ {
ogs_gtp_flow_qos_t target; ogs_gtp2_flow_qos_t target;
int16_t size = 0; int16_t size = 0;
ogs_assert(flow_qos); ogs_assert(flow_qos);
ogs_assert(octet); ogs_assert(octet);
ogs_assert(data); ogs_assert(data);
ogs_assert(data_len >= GTP_FLOW_QOS_LEN); ogs_assert(data_len >= GTP2_FLOW_QOS_LEN);
octet->data = data; octet->data = data;
memcpy(&target, flow_qos, sizeof(ogs_gtp_flow_qos_t)); memcpy(&target, flow_qos, sizeof(ogs_gtp2_flow_qos_t));
memcpy((unsigned char *)octet->data + size, &target, 2); memcpy((unsigned char *)octet->data + size, &target, 2);
size += 1; size += 1;
@ -279,7 +279,7 @@ int16_t ogs_gtp_build_flow_qos(ogs_tlv_octet_t *octet,
/* 8.19 EPS Bearer Level Traffic Flow Template (Bearer TFT) /* 8.19 EPS Bearer Level Traffic Flow Template (Bearer TFT)
* See subclause 10.5.6.12 in 3GPP TS 24.008 [13]. */ * See subclause 10.5.6.12 in 3GPP TS 24.008 [13]. */
int16_t ogs_gtp_parse_tft(ogs_gtp_tft_t *tft, ogs_tlv_octet_t *octet) int16_t ogs_gtp2_parse_tft(ogs_gtp2_tft_t *tft, ogs_tlv_octet_t *octet)
{ {
int16_t size = 0; int16_t size = 0;
int i, j, len = 0; int i, j, len = 0;
@ -287,19 +287,19 @@ int16_t ogs_gtp_parse_tft(ogs_gtp_tft_t *tft, ogs_tlv_octet_t *octet)
ogs_assert(tft); ogs_assert(tft);
ogs_assert(octet); ogs_assert(octet);
memset(tft, 0, sizeof(ogs_gtp_tft_t)); memset(tft, 0, sizeof(ogs_gtp2_tft_t));
ogs_assert(size+sizeof(tft->flags) <= octet->len); ogs_assert(size+sizeof(tft->flags) <= octet->len);
memcpy(&tft->flags, (unsigned char *)octet->data+size, sizeof(tft->flags)); memcpy(&tft->flags, (unsigned char *)octet->data+size, sizeof(tft->flags));
size++; size++;
if (tft->code == OGS_GTP_TFT_CODE_IGNORE_THIS_IE) { if (tft->code == OGS_GTP2_TFT_CODE_IGNORE_THIS_IE) {
ogs_error("Invalid TFT Code(Spare)"); ogs_error("Invalid TFT Code(Spare)");
return size; return size;
} }
if (tft->code == OGS_GTP_TFT_CODE_NO_TFT_OPERATION || if (tft->code == OGS_GTP2_TFT_CODE_NO_TFT_OPERATION ||
tft->code == OGS_GTP_TFT_CODE_DELETE_EXISTING_TFT) tft->code == OGS_GTP2_TFT_CODE_DELETE_EXISTING_TFT)
return size; return size;
for (i = 0; i < tft->num_of_packet_filter && for (i = 0; i < tft->num_of_packet_filter &&
@ -309,7 +309,7 @@ int16_t ogs_gtp_parse_tft(ogs_gtp_tft_t *tft, ogs_tlv_octet_t *octet)
sizeof(tft->pf[i].flags)); sizeof(tft->pf[i].flags));
size += sizeof(tft->pf[i].flags); size += sizeof(tft->pf[i].flags);
if (tft->code == OGS_GTP_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING) if (tft->code == OGS_GTP2_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING)
continue; continue;
ogs_assert(size+sizeof(tft->pf[i].precedence) <= octet->len); ogs_assert(size+sizeof(tft->pf[i].precedence) <= octet->len);
@ -443,30 +443,30 @@ int16_t ogs_gtp_parse_tft(ogs_gtp_tft_t *tft, ogs_tlv_octet_t *octet)
return size; return size;
} }
int16_t ogs_gtp_build_tft( int16_t ogs_gtp2_build_tft(
ogs_tlv_octet_t *octet, ogs_gtp_tft_t *tft, void *data, int data_len) ogs_tlv_octet_t *octet, ogs_gtp2_tft_t *tft, void *data, int data_len)
{ {
ogs_gtp_tft_t target; ogs_gtp2_tft_t target;
uint16_t size = 0; uint16_t size = 0;
int i, j; int i, j;
ogs_assert(tft); ogs_assert(tft);
ogs_assert(octet); ogs_assert(octet);
ogs_assert(data); ogs_assert(data);
ogs_assert(data_len >= OGS_GTP_MAX_TRAFFIC_FLOW_TEMPLATE); ogs_assert(data_len >= OGS_GTP2_MAX_TRAFFIC_FLOW_TEMPLATE);
ogs_assert(tft->code != OGS_GTP_TFT_CODE_IGNORE_THIS_IE); ogs_assert(tft->code != OGS_GTP2_TFT_CODE_IGNORE_THIS_IE);
octet->data = data; octet->data = data;
memcpy(&target, tft, sizeof(ogs_gtp_tft_t)); memcpy(&target, tft, sizeof(ogs_gtp2_tft_t));
ogs_assert(size + sizeof(target.flags) <= data_len); ogs_assert(size + sizeof(target.flags) <= data_len);
memcpy((unsigned char *)octet->data + size, &target.flags, memcpy((unsigned char *)octet->data + size, &target.flags,
sizeof(target.flags)); sizeof(target.flags));
size += sizeof(target.flags); size += sizeof(target.flags);
if (tft->code == OGS_GTP_TFT_CODE_NO_TFT_OPERATION || if (tft->code == OGS_GTP2_TFT_CODE_NO_TFT_OPERATION ||
tft->code == OGS_GTP_TFT_CODE_DELETE_EXISTING_TFT) tft->code == OGS_GTP2_TFT_CODE_DELETE_EXISTING_TFT)
return size; return size;
for (i = 0; i < target.num_of_packet_filter && for (i = 0; i < target.num_of_packet_filter &&
@ -476,7 +476,7 @@ int16_t ogs_gtp_build_tft(
sizeof(target.pf[i].flags)); sizeof(target.pf[i].flags));
size += sizeof(target.pf[i].flags); size += sizeof(target.pf[i].flags);
if (tft->code == OGS_GTP_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING) if (tft->code == OGS_GTP2_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING)
continue; continue;
ogs_assert(size + sizeof(target.pf[i].precedence) <= data_len); ogs_assert(size + sizeof(target.pf[i].precedence) <= data_len);
@ -615,15 +615,15 @@ int16_t ogs_gtp_build_tft(
/* 8.21 User Location Information (ULI) */ /* 8.21 User Location Information (ULI) */
int16_t ogs_gtp_parse_uli(ogs_gtp_uli_t *uli, ogs_tlv_octet_t *octet) int16_t ogs_gtp2_parse_uli(ogs_gtp2_uli_t *uli, ogs_tlv_octet_t *octet)
{ {
ogs_gtp_uli_t *source = (ogs_gtp_uli_t *)octet->data; ogs_gtp2_uli_t *source = (ogs_gtp2_uli_t *)octet->data;
int16_t size = 0; int16_t size = 0;
ogs_assert(uli); ogs_assert(uli);
ogs_assert(octet); ogs_assert(octet);
memset(uli, 0, sizeof(ogs_gtp_uli_t)); memset(uli, 0, sizeof(ogs_gtp2_uli_t));
uli->flags = source->flags; uli->flags = source->flags;
size++; size++;
@ -678,10 +678,10 @@ int16_t ogs_gtp_parse_uli(ogs_gtp_uli_t *uli, ogs_tlv_octet_t *octet)
return size; return size;
} }
int16_t ogs_gtp_build_uli( int16_t ogs_gtp2_build_uli(
ogs_tlv_octet_t *octet, ogs_gtp_uli_t *uli, void *data, int data_len) ogs_tlv_octet_t *octet, ogs_gtp2_uli_t *uli, void *data, int data_len)
{ {
ogs_gtp_uli_t target; ogs_gtp2_uli_t target;
int16_t size = 0; int16_t size = 0;
ogs_assert(uli); ogs_assert(uli);
@ -690,7 +690,7 @@ int16_t ogs_gtp_build_uli(
ogs_assert(data_len); ogs_assert(data_len);
octet->data = data; octet->data = data;
memcpy(&target, uli, sizeof(ogs_gtp_uli_t)); memcpy(&target, uli, sizeof(ogs_gtp2_uli_t));
ogs_assert(size + sizeof(target.flags) <= data_len); ogs_assert(size + sizeof(target.flags) <= data_len);
memcpy((unsigned char *)octet->data + size, memcpy((unsigned char *)octet->data + size,

View File

@ -21,14 +21,14 @@
#error "This header cannot be included directly." #error "This header cannot be included directly."
#endif #endif
#ifndef OGS_GTP_TYPES_H #ifndef OGS_GTP2_TYPES_H
#define OGS_GTP_TYPES_H #define OGS_GTP2_TYPES_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#define OGS_GTP_MAX_INDIRECT_TUNNEL 8 #define OGS_GTP2_MAX_INDIRECT_TUNNEL 8
#define OGS_GTPV1U_5GC_HEADER_LEN 16 #define OGS_GTPV1U_5GC_HEADER_LEN 16
/* /*
@ -50,120 +50,120 @@ extern "C" {
*/ */
#define OGS_GTPV1U_EXTENSION_HEADER_LEN 4 #define OGS_GTPV1U_EXTENSION_HEADER_LEN 4
typedef struct ogs_gtp_extension_header_s { typedef struct ogs_gtp2_extension_header_s {
#define OGS_GTP_EXTENSION_HEADER_TYPE_UDP_PORT 0x40 #define OGS_GTP2_EXTENSION_HEADER_TYPE_UDP_PORT 0x40
#define OGS_GTP_EXTENSION_HEADER_TYPE_PDU_SESSION_CONTAINER 0x85 #define OGS_GTP2_EXTENSION_HEADER_TYPE_PDU_SESSION_CONTAINER 0x85
#define OGS_GTP_EXTENSION_HEADER_TYPE_NO_MORE_EXTENSION_HEADERS 0x0 #define OGS_GTP2_EXTENSION_HEADER_TYPE_NO_MORE_EXTENSION_HEADERS 0x0
uint16_t sequence_number; uint16_t sequence_number;
uint8_t n_pdu_number; uint8_t n_pdu_number;
uint8_t type; uint8_t type;
uint8_t len; uint8_t len;
#define OGS_GTP_EXTENSION_HEADER_PDU_TYPE_DL_PDU_SESSION_INFORMATION 0 #define OGS_GTP2_EXTENSION_HEADER_PDU_TYPE_DL_PDU_SESSION_INFORMATION 0
#define OGS_GTP_EXTENSION_HEADER_PDU_TYPE_UL_PDU_SESSION_INFORMATION 1 #define OGS_GTP2_EXTENSION_HEADER_PDU_TYPE_UL_PDU_SESSION_INFORMATION 1
ED2(uint8_t pdu_type:4;, ED2(uint8_t pdu_type:4;,
uint8_t spare1:4;); uint8_t spare1:4;);
ED3(uint8_t paging_policy_presence:1;, ED3(uint8_t paging_policy_presence:1;,
uint8_t reflective_qos_indicator:1;, uint8_t reflective_qos_indicator:1;,
uint8_t qos_flow_identifier:6;); uint8_t qos_flow_identifier:6;);
uint8_t next_type; uint8_t next_type;
} __attribute__ ((packed)) ogs_gtp_extension_header_t; } __attribute__ ((packed)) ogs_gtp2_extension_header_t;
/* 8.4 Cause */ /* 8.4 Cause */
#define OGS_GTP_CAUSE_UNDEFINED_VALUE 0 #define OGS_GTP2_CAUSE_UNDEFINED_VALUE 0
#define OGS_GTP_CAUSE_LOCAL_DETACH 2 #define OGS_GTP2_CAUSE_LOCAL_DETACH 2
#define OGS_GTP_CAUSE_COMPLETE_DETACH_3 #define OGS_GTP2_CAUSE_COMPLETE_DETACH_3
#define OGS_GTP_CAUSE_RAT_CHANGED_FROM_3GPP_TO_NON_3GPP 4 #define OGS_GTP2_CAUSE_RAT_CHANGED_FROM_3GPP_TO_NON_3GPP 4
#define OGS_GTP_CAUSE_ISR_DEACTIVATION 5 #define OGS_GTP2_CAUSE_ISR_DEACTIVATION 5
#define OGS_GTP_CAUSE_ERROR_INDICATION_RECEIVED 6 #define OGS_GTP2_CAUSE_ERROR_INDICATION_RECEIVED 6
#define OGS_GTP_CAUSE_IMSI_DETACH_ONLY 7 #define OGS_GTP2_CAUSE_IMSI_DETACH_ONLY 7
#define OGS_GTP_CAUSE_REACTIVATION_REQUESTED 8 #define OGS_GTP2_CAUSE_REACTIVATION_REQUESTED 8
#define OGS_GTP_CAUSE_PDN_RECONNECTION_TO_THIS_APN_DISALLOWED 9 #define OGS_GTP2_CAUSE_PDN_RECONNECTION_TO_THIS_APN_DISALLOWED 9
#define OGS_GTP_CAUSE_ACCESS_CHANGED_FROM_NON_3GPP_TO_3GPP 10 #define OGS_GTP2_CAUSE_ACCESS_CHANGED_FROM_NON_3GPP_TO_3GPP 10
#define OGS_GTP_CAUSE_PDN_CONNECTION_INACTIVITY_TIMER_EXPIRES 11 #define OGS_GTP2_CAUSE_PDN_CONNECTION_INACTIVITY_TIMER_EXPIRES 11
#define OGS_GTP_CAUSE_PGW_NOT_RESPONDING 12 #define OGS_GTP2_CAUSE_PGW_NOT_RESPONDING 12
#define OGS_GTP_CAUSE_NETWORK_FAILURE 13 #define OGS_GTP2_CAUSE_NETWORK_FAILURE 13
#define OGS_GTP_CAUSE_QOS_PARAMETER_MISMATCH 14 #define OGS_GTP2_CAUSE_QOS_PARAMETER_MISMATCH 14
#define OGS_GTP_CAUSE_REQUEST_ACCEPTED 16 #define OGS_GTP2_CAUSE_REQUEST_ACCEPTED 16
#define OGS_GTP_CAUSE_REQUEST_ACCEPTED_PARTIALLY 17 #define OGS_GTP2_CAUSE_REQUEST_ACCEPTED_PARTIALLY 17
#define OGS_GTP_CAUSE_NEW_PDN_TYPE_DUE_TO_NETWORK_PREFERENCE 18 #define OGS_GTP2_CAUSE_NEW_PDN_TYPE_DUE_TO_NETWORK_PREFERENCE 18
#define OGS_GTP_CAUSE_NEW_PDN_TYPE_DUE_TO_SINGLE_ADDRESS_BEARER_ONLY 19 #define OGS_GTP2_CAUSE_NEW_PDN_TYPE_DUE_TO_SINGLE_ADDRESS_BEARER_ONLY 19
#define OGS_GTP_CAUSE_CONTEXT_NOT_FOUND 64 #define OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND 64
#define OGS_GTP_CAUSE_INVALID_MESSAGE_FORMAT 65 #define OGS_GTP2_CAUSE_INVALID_MESSAGE_FORMAT 65
#define OGS_GTP_CAUSE_VERSION_NOT_SUPPORTED_BY_NEXT_PEER 66 #define OGS_GTP2_CAUSE_VERSION_NOT_SUPPORTED_BY_NEXT_PEER 66
#define OGS_GTP_CAUSE_INVALID_LENGTH 67 #define OGS_GTP2_CAUSE_INVALID_LENGTH 67
#define OGS_GTP_CAUSE_SERVICE_NOT_SUPPORTED 68 #define OGS_GTP2_CAUSE_SERVICE_NOT_SUPPORTED 68
#define OGS_GTP_CAUSE_MANDATORY_IE_INCORRECT 69 #define OGS_GTP2_CAUSE_MANDATORY_IE_INCORRECT 69
#define OGS_GTP_CAUSE_MANDATORY_IE_MISSING 70 #define OGS_GTP2_CAUSE_MANDATORY_IE_MISSING 70
#define OGS_GTP_CAUSE_SYSTEM_FAILURE 72 #define OGS_GTP2_CAUSE_SYSTEM_FAILURE 72
#define OGS_GTP_CAUSE_NO_RESOURCES_AVAILABLE 73 #define OGS_GTP2_CAUSE_NO_RESOURCES_AVAILABLE 73
#define OGS_GTP_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION 74 #define OGS_GTP2_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION 74
#define OGS_GTP_CAUSE_SYNTACTIC_ERROR_IN_THE_TFT_OPERATION 75 #define OGS_GTP2_CAUSE_SYNTACTIC_ERROR_IN_THE_TFT_OPERATION 75
#define OGS_GTP_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTER 76 #define OGS_GTP2_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTER 76
#define OGS_GTP_CAUSE_SYNTACTIC_ERRORS_IN_PACKET_FILTER 77 #define OGS_GTP2_CAUSE_SYNTACTIC_ERRORS_IN_PACKET_FILTER 77
#define OGS_GTP_CAUSE_MISSING_OR_UNKNOWN_APN 78 #define OGS_GTP2_CAUSE_MISSING_OR_UNKNOWN_APN 78
#define OGS_GTP_CAUSE_GRE_KEY_NOT_FOUND 80 #define OGS_GTP2_CAUSE_GRE_KEY_NOT_FOUND 80
#define OGS_GTP_CAUSE_RELOCATION_FAILURE 81 #define OGS_GTP2_CAUSE_RELOCATION_FAILURE 81
#define OGS_GTP_CAUSE_DENIED_IN_RAT 82 #define OGS_GTP2_CAUSE_DENIED_IN_RAT 82
#define OGS_GTP_CAUSE_PREFERRED_PDN_TYPE_NOT_SUPPORTED 83 #define OGS_GTP2_CAUSE_PREFERRED_PDN_TYPE_NOT_SUPPORTED 83
#define OGS_GTP_CAUSE_ALL_DYNAMIC_ADDRESSES_ARE_OCCUPIED 84 #define OGS_GTP2_CAUSE_ALL_DYNAMIC_ADDRESSES_ARE_OCCUPIED 84
#define OGS_GTP_CAUSE_UE_CONTEXT_WITHOUT_TFT_ALREADY_ACTIVATED 85 #define OGS_GTP2_CAUSE_UE_CONTEXT_WITHOUT_TFT_ALREADY_ACTIVATED 85
#define OGS_GTP_CAUSE_PROTOCOL_TYPE_NOT_SUPPORTED 86 #define OGS_GTP2_CAUSE_PROTOCOL_TYPE_NOT_SUPPORTED 86
#define OGS_GTP_CAUSE_UE_NOT_RESPONDING 87 #define OGS_GTP2_CAUSE_UE_NOT_RESPONDING 87
#define OGS_GTP_CAUSE_UE_REFUSES 88 #define OGS_GTP2_CAUSE_UE_REFUSES 88
#define OGS_GTP_CAUSE_SERVICE_DENIED 89 #define OGS_GTP2_CAUSE_SERVICE_DENIED 89
#define OGS_GTP_CAUSE_UNABLE_TO_PAGE_UE 90 #define OGS_GTP2_CAUSE_UNABLE_TO_PAGE_UE 90
#define OGS_GTP_CAUSE_NO_MEMORY_AVAILABLE 91 #define OGS_GTP2_CAUSE_NO_MEMORY_AVAILABLE 91
#define OGS_GTP_CAUSE_USER_AUTHENTICATION_FAILED 92 #define OGS_GTP2_CAUSE_USER_AUTHENTICATION_FAILED 92
#define OGS_GTP_CAUSE_APN_ACCESS_DENIED_NO_SUBSCRIPTION 93 #define OGS_GTP2_CAUSE_APN_ACCESS_DENIED_NO_SUBSCRIPTION 93
#define OGS_GTP_CAUSE_REQUEST_REJECTED_REASON_NOT_SPECIFIED 94 #define OGS_GTP2_CAUSE_REQUEST_REJECTED_REASON_NOT_SPECIFIED 94
#define OGS_GTP_CAUSE_P_TMSI_SIGNATURE_MISMATCH 95 #define OGS_GTP2_CAUSE_P_TMSI_SIGNATURE_MISMATCH 95
#define OGS_GTP_CAUSE_IMSI_IMEI_NOT_KNOWN 96 #define OGS_GTP2_CAUSE_IMSI_IMEI_NOT_KNOWN 96
#define OGS_GTP_CAUSE_SEMANTIC_ERROR_IN_THE_TAD_OPERATION 97 #define OGS_GTP2_CAUSE_SEMANTIC_ERROR_IN_THE_TAD_OPERATION 97
#define OGS_GTP_CAUSE_SYNTACTIC_ERROR_IN_THE_TAD_OPERATION 98 #define OGS_GTP2_CAUSE_SYNTACTIC_ERROR_IN_THE_TAD_OPERATION 98
#define OGS_GTP_CAUSE_REMOTE_PEER_NOT_RESPONDING 100 #define OGS_GTP2_CAUSE_REMOTE_PEER_NOT_RESPONDING 100
#define OGS_GTP_CAUSE_COLLISION_WITH_NETWORK_INITIATED_REQUEST 101 #define OGS_GTP2_CAUSE_COLLISION_WITH_NETWORK_INITIATED_REQUEST 101
#define OGS_GTP_CAUSE_UNABLE_TO_PAGE_UE_DUE_TO_SUSPENSION 102 #define OGS_GTP2_CAUSE_UNABLE_TO_PAGE_UE_DUE_TO_SUSPENSION 102
#define OGS_GTP_CAUSE_CONDITIONAL_IE_MISSING 103 #define OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING 103
#define OGS_GTP_CAUSE_APN_RESTRICTION_TYPE_INCOMPATIBLE 104 #define OGS_GTP2_CAUSE_APN_RESTRICTION_TYPE_INCOMPATIBLE 104
#define OGS_GTP_CAUSE_INVALID_OVERALL_LENGTH 105 #define OGS_GTP2_CAUSE_INVALID_OVERALL_LENGTH 105
#define OGS_GTP_CAUSE_DATA_FORWARDING_NOT_SUPPORTED 106 #define OGS_GTP2_CAUSE_DATA_FORWARDING_NOT_SUPPORTED 106
#define OGS_GTP_CAUSE_INVALID_REPLY_FROM_REMOTE_PEER 107 #define OGS_GTP2_CAUSE_INVALID_REPLY_FROM_REMOTE_PEER 107
#define OGS_GTP_CAUSE_FALLBACK_TO_GTPV1 108 #define OGS_GTP2_CAUSE_FALLBACK_TO_GTPV1 108
#define OGS_GTP_CAUSE_INVALID_PEER 109 #define OGS_GTP2_CAUSE_INVALID_PEER 109
#define OGS_GTP_CAUSE_TEMPORARILY_REJECTED_DUE_TO_HANDOVER_IN_PROGRESS 110 #define OGS_GTP2_CAUSE_TEMPORARILY_REJECTED_DUE_TO_HANDOVER_IN_PROGRESS 110
#define OGS_GTP_CAUSE_MODIFICATIONS_NOT_LIMITED_TO_S1_U_BEARERS 111 #define OGS_GTP2_CAUSE_MODIFICATIONS_NOT_LIMITED_TO_S1_U_BEARERS 111
#define OGS_GTP_CAUSE_REQUEST_REJECTED_FOR_A_PMIPV6_REASON 112 #define OGS_GTP2_CAUSE_REQUEST_REJECTED_FOR_A_PMIPV6_REASON 112
#define OGS_GTP_CAUSE_APN_CONGESTION 113 #define OGS_GTP2_CAUSE_APN_CONGESTION 113
#define OGS_GTP_CAUSE_BEARER_HANDLING_NOT_SUPPORTED 114 #define OGS_GTP2_CAUSE_BEARER_HANDLING_NOT_SUPPORTED 114
#define OGS_GTP_CAUSE_UE_ALREADY_RE_ATTACHED 115 #define OGS_GTP2_CAUSE_UE_ALREADY_RE_ATTACHED 115
#define OGS_GTP_CAUSE_MULTIPLE_PDN_CONNECTIONS_FOR_A_GIVEN_APN_NOT_ALLOWED 116 #define OGS_GTP2_CAUSE_MULTIPLE_PDN_CONNECTIONS_FOR_A_GIVEN_APN_NOT_ALLOWED 116
#define OGS_GTP_CAUSE_TARGET_ACCESS_RESTRICTED_FOR_THE_SUBSCRIBER 117 #define OGS_GTP2_CAUSE_TARGET_ACCESS_RESTRICTED_FOR_THE_SUBSCRIBER 117
#define OGS_GTP_CAUSE_MME_SGSN_REFUSES_DUE_TO_VPLMN_POLICY 119 #define OGS_GTP2_CAUSE_MME_SGSN_REFUSES_DUE_TO_VPLMN_POLICY 119
#define OGS_GTP_CAUSE_GTP_C_ENTITY_CONGESTION 120 #define OGS_GTP2_CAUSE_GTP_C_ENTITY_CONGESTION 120
#define OGS_GTP_CAUSE_LATE_OVERLAPPING_REQUEST 121 #define OGS_GTP2_CAUSE_LATE_OVERLAPPING_REQUEST 121
#define OGS_GTP_CAUSE_TIMED_OUT_REQUEST 122 #define OGS_GTP2_CAUSE_TIMED_OUT_REQUEST 122
#define OGS_GTP_CAUSE_UE_IS_TEMPORARILY_NOT_REACHABLE_DUE_TO_POWER_SAVING 123 #define OGS_GTP2_CAUSE_UE_IS_TEMPORARILY_NOT_REACHABLE_DUE_TO_POWER_SAVING 123
#define OGS_GTP_CAUSE_RELOCATION_FAILURE_DUE_TO_NAS_MESSAGE_REDIRECTION 124 #define OGS_GTP2_CAUSE_RELOCATION_FAILURE_DUE_TO_NAS_MESSAGE_REDIRECTION 124
#define OGS_GTP_CAUSE_UE_NOT_AUTHORISED_BY_OCS_OR_EXTERNAL_AAA_SERVER 125 #define OGS_GTP2_CAUSE_UE_NOT_AUTHORISED_BY_OCS_OR_EXTERNAL_AAA_SERVER 125
#define OGS_GTP_CAUSE_MULTIPLE_ACCESSES_TO_A_PDN_CONNECTION_NOT_ALLOWED 126 #define OGS_GTP2_CAUSE_MULTIPLE_ACCESSES_TO_A_PDN_CONNECTION_NOT_ALLOWED 126
#define OGS_GTP_CAUSE_REQUEST_REJECTED_DUE_TO_UE_CAPABILITY 127 #define OGS_GTP2_CAUSE_REQUEST_REJECTED_DUE_TO_UE_CAPABILITY 127
typedef struct ogs_gtp_cause_s { typedef struct ogs_gtp2_cause_s {
uint8_t value; uint8_t value;
ED4(uint8_t spare:5;, ED4(uint8_t spare:5;,
uint8_t pce:1;, uint8_t pce:1;,
uint8_t bce:1;, uint8_t bce:1;,
uint8_t cs:1;) uint8_t cs:1;)
} __attribute__ ((packed)) ogs_gtp_cause_t; } __attribute__ ((packed)) ogs_gtp2_cause_t;
/* 8.7 Aggregate Maximum Bit Rate (AMBR) */ /* 8.7 Aggregate Maximum Bit Rate (AMBR) */
typedef struct ogs_gtp_ambr_s { typedef struct ogs_gtp2_ambr_s {
uint32_t uplink; uint32_t uplink;
uint32_t downlink; uint32_t downlink;
} __attribute__ ((packed)) ogs_gtp_ambr_t; } __attribute__ ((packed)) ogs_gtp2_ambr_t;
/* 8.12 Indication */ /* 8.12 Indication */
typedef struct ogs_gtp_indication_s { typedef struct ogs_gtp2_indication_s {
ED8(uint8_t dual_address_bearer_flag:1;, ED8(uint8_t dual_address_bearer_flag:1;,
uint8_t direct_tunnel_flag:1;, uint8_t direct_tunnel_flag:1;,
uint8_t handover_indication:1;, uint8_t handover_indication:1;,
@ -244,7 +244,7 @@ ED8(uint8_t spare1:1;,
uint8_t notify_source_enodeb_indication:1;, uint8_t notify_source_enodeb_indication:1;,
uint8_t indirect_data_forwarding_with_upf_indication:1;, uint8_t indirect_data_forwarding_with_upf_indication:1;,
uint8_t emergency_pdu_session_indication:1;) uint8_t emergency_pdu_session_indication:1;)
} __attribute__ ((packed)) ogs_gtp_indication_t; } __attribute__ ((packed)) ogs_gtp2_indication_t;
/* 8.13 Protocol Configuration Options (PCO) /* 8.13 Protocol Configuration Options (PCO)
* 10.5.6.3 Protocol configuration options in 3GPP TS 24.008 * 10.5.6.3 Protocol configuration options in 3GPP TS 24.008
@ -252,8 +252,8 @@ ED8(uint8_t spare1:1;,
* RFC 1661 [102] */ * RFC 1661 [102] */
/* 8.15 Bearer Quality of Service (Bearer QoS) */ /* 8.15 Bearer Quality of Service (Bearer QoS) */
#define GTP_BEARER_QOS_LEN 22 #define GTP2_BEARER_QOS_LEN 22
typedef struct ogs_gtp_bearer_qos_s { typedef struct ogs_gtp2_bearer_qos_s {
ED5(uint8_t spare1:1;, ED5(uint8_t spare1:1;,
/* See 3GPP TS 29.212[29], clause 5.3.46 Pre-emption-Capability AVP. */ /* See 3GPP TS 29.212[29], clause 5.3.46 Pre-emption-Capability AVP. */
uint8_t pre_emption_capability:1;, uint8_t pre_emption_capability:1;,
@ -274,16 +274,16 @@ ED5(uint8_t spare1:1;,
/* NOTE : The encoding in 3GPP TS 24.301 [23] and 3GPP TS 36.413 [10] /* NOTE : The encoding in 3GPP TS 24.301 [23] and 3GPP TS 36.413 [10]
* is different from the encoding within this specification. */ * is different from the encoding within this specification. */
} __attribute__ ((packed)) ogs_gtp_bearer_qos_t; } __attribute__ ((packed)) ogs_gtp2_bearer_qos_t;
int16_t ogs_gtp_parse_bearer_qos( int16_t ogs_gtp2_parse_bearer_qos(
ogs_gtp_bearer_qos_t *bearer_qos, ogs_tlv_octet_t *octet); ogs_gtp2_bearer_qos_t *bearer_qos, ogs_tlv_octet_t *octet);
int16_t ogs_gtp_build_bearer_qos(ogs_tlv_octet_t *octet, int16_t ogs_gtp2_build_bearer_qos(ogs_tlv_octet_t *octet,
ogs_gtp_bearer_qos_t *bearer_qos, void *data, int data_len); ogs_gtp2_bearer_qos_t *bearer_qos, void *data, int data_len);
/* 8.16 Flow Quality of Service (Flow QoS) */ /* 8.16 Flow Quality of Service (Flow QoS) */
#define GTP_FLOW_QOS_LEN 21 #define GTP2_FLOW_QOS_LEN 21
typedef struct ogs_gtp_flow_qos_s { typedef struct ogs_gtp2_flow_qos_s {
uint8_t qci; /* specified in 3GPP TS 23.203 [48]. */ uint8_t qci; /* specified in 3GPP TS 23.203 [48]. */
/* specified in 3GPP TS 36.413 [10]. */ /* specified in 3GPP TS 36.413 [10]. */
@ -294,42 +294,42 @@ typedef struct ogs_gtp_flow_qos_s {
/* NOTE : The encoding in 3GPP TS 24.301 [23] and 3GPP TS 36.413 [10] /* NOTE : The encoding in 3GPP TS 24.301 [23] and 3GPP TS 36.413 [10]
* is different from the encoding within this specification. */ * is different from the encoding within this specification. */
} __attribute__ ((packed)) ogs_gtp_flow_qos_t; } __attribute__ ((packed)) ogs_gtp2_flow_qos_t;
#define ogs_gtp_qos_to_bps(br, extended, extended2) \ #define ogs_gtp2_qos_to_bps(br, extended, extended2) \
ogs_gtp_qos_to_kbps(br, extended, extended2) * 1024; ogs_gtp2_qos_to_kbps(br, extended, extended2) * 1024;
uint64_t ogs_gtp_qos_to_kbps(uint8_t br, uint8_t extended, uint8_t extended2); uint64_t ogs_gtp2_qos_to_kbps(uint8_t br, uint8_t extended, uint8_t extended2);
int16_t ogs_gtp_parse_flow_qos( int16_t ogs_gtp2_parse_flow_qos(
ogs_gtp_flow_qos_t *flow_qos, ogs_tlv_octet_t *octet); ogs_gtp2_flow_qos_t *flow_qos, ogs_tlv_octet_t *octet);
int16_t ogs_gtp_build_flow_qos(ogs_tlv_octet_t *octet, int16_t ogs_gtp2_build_flow_qos(ogs_tlv_octet_t *octet,
ogs_gtp_flow_qos_t *flow_qos, void *data, int data_len); ogs_gtp2_flow_qos_t *flow_qos, void *data, int data_len);
/* 8.17 RAT Type */ /* 8.17 RAT Type */
#define OGS_GTP_RAT_TYPE_UTRAN 1 #define OGS_GTP2_RAT_TYPE_UTRAN 1
#define OGS_GTP_RAT_TYPE_GERAN 2 #define OGS_GTP2_RAT_TYPE_GERAN 2
#define OGS_GTP_RAT_TYPE_WLAN 3 #define OGS_GTP2_RAT_TYPE_WLAN 3
#define OGS_GTP_RAT_TYPE_GAN 4 #define OGS_GTP2_RAT_TYPE_GAN 4
#define OGS_GTP_RAT_TYPE_HSPA_EVOLUTION 5 #define OGS_GTP2_RAT_TYPE_HSPA_EVOLUTION 5
#define OGS_GTP_RAT_TYPE_EUTRAN 6 #define OGS_GTP2_RAT_TYPE_EUTRAN 6
#define OGS_GTP_RAT_TYPE_VIRTUAL 7 #define OGS_GTP2_RAT_TYPE_VIRTUAL 7
#define OGS_GTP_RAT_TYPE_EUTRAN_NB_IOT 8 #define OGS_GTP2_RAT_TYPE_EUTRAN_NB_IOT 8
/* 8.19 EPS Bearer Level Traffic Flow Template (Bearer TFT) /* 8.19 EPS Bearer Level Traffic Flow Template (Bearer TFT)
* See subclause 10.5.6.12 in 3GPP TS 24.008 [13]. */ * See subclause 10.5.6.12 in 3GPP TS 24.008 [13]. */
#define OGS_GTP_MAX_TRAFFIC_FLOW_TEMPLATE 255 #define OGS_GTP2_MAX_TRAFFIC_FLOW_TEMPLATE 255
typedef struct ogs_gtp_tft_s { typedef struct ogs_gtp2_tft_s {
union { union {
struct { struct {
#define OGS_GTP_TFT_CODE_IGNORE_THIS_IE 0 #define OGS_GTP2_TFT_CODE_IGNORE_THIS_IE 0
#define OGS_GTP_TFT_CODE_CREATE_NEW_TFT 1 #define OGS_GTP2_TFT_CODE_CREATE_NEW_TFT 1
#define OGS_GTP_TFT_CODE_DELETE_EXISTING_TFT 2 #define OGS_GTP2_TFT_CODE_DELETE_EXISTING_TFT 2
#define OGS_GTP_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT 3 #define OGS_GTP2_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT 3
#define OGS_GTP_TFT_CODE_REPLACE_PACKET_FILTERS_IN_EXISTING 4 #define OGS_GTP2_TFT_CODE_REPLACE_PACKET_FILTERS_IN_EXISTING 4
#define OGS_GTP_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING 5 #define OGS_GTP2_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING 5
#define OGS_GTP_TFT_CODE_NO_TFT_OPERATION 6 #define OGS_GTP2_TFT_CODE_NO_TFT_OPERATION 6
ED3(uint8_t code:3;, ED3(uint8_t code:3;,
uint8_t e_bit:1;, uint8_t e_bit:1;,
uint8_t num_of_packet_filter:4;) uint8_t num_of_packet_filter:4;)
@ -348,48 +348,48 @@ ED3(uint8_t code:3;,
uint8_t precedence; uint8_t precedence;
ogs_pf_content_t content; ogs_pf_content_t content;
} pf[OGS_MAX_NUM_OF_FLOW_IN_GTP]; } pf[OGS_MAX_NUM_OF_FLOW_IN_GTP];
} ogs_gtp_tft_t; } ogs_gtp2_tft_t;
int16_t ogs_gtp_parse_tft(ogs_gtp_tft_t *tft, ogs_tlv_octet_t *octet); int16_t ogs_gtp2_parse_tft(ogs_gtp2_tft_t *tft, ogs_tlv_octet_t *octet);
int16_t ogs_gtp_build_tft( int16_t ogs_gtp2_build_tft(
ogs_tlv_octet_t *octet, ogs_gtp_tft_t *tft, void *data, int data_len); ogs_tlv_octet_t *octet, ogs_gtp2_tft_t *tft, void *data, int data_len);
/* 8.21 User Location Information (ULI) */ /* 8.21 User Location Information (ULI) */
#define OGS_GTP_MAX_ULI_LEN sizeof(ogs_gtp_uli_t) #define OGS_GTP2_MAX_ULI_LEN sizeof(ogs_gtp2_uli_t)
typedef struct ogs_gtp_uli_cgi_s { typedef struct ogs_gtp2_uli_cgi_s {
ogs_nas_plmn_id_t nas_plmn_id; ogs_nas_plmn_id_t nas_plmn_id;
uint16_t lac; uint16_t lac;
uint16_t ci; uint16_t ci;
} __attribute__ ((packed)) ogs_gtp_uli_cgi_t; } __attribute__ ((packed)) ogs_gtp2_uli_cgi_t;
typedef struct ogs_gtp_uli_sai_s { typedef struct ogs_gtp2_uli_sai_s {
ogs_nas_plmn_id_t nas_plmn_id; ogs_nas_plmn_id_t nas_plmn_id;
uint16_t lac; uint16_t lac;
uint16_t sac; uint16_t sac;
} __attribute__ ((packed)) ogs_gtp_uli_sai_t; } __attribute__ ((packed)) ogs_gtp2_uli_sai_t;
typedef struct ogs_gtp_uli_rai_s { typedef struct ogs_gtp2_uli_rai_s {
ogs_nas_plmn_id_t nas_plmn_id; ogs_nas_plmn_id_t nas_plmn_id;
uint16_t lac; uint16_t lac;
uint16_t rac; uint16_t rac;
} __attribute__ ((packed)) ogs_gtp_uli_rai_t; } __attribute__ ((packed)) ogs_gtp2_uli_rai_t;
typedef struct ogs_gtp_uli_lai_s { typedef struct ogs_gtp2_uli_lai_s {
ogs_nas_plmn_id_t nas_plmn_id; ogs_nas_plmn_id_t nas_plmn_id;
uint16_t lac; uint16_t lac;
} __attribute__ ((packed)) ogs_gtp_uli_lai_t; } __attribute__ ((packed)) ogs_gtp2_uli_lai_t;
typedef struct ogs_gtp_uli_tai_s { typedef struct ogs_gtp2_uli_tai_s {
ogs_nas_plmn_id_t nas_plmn_id; ogs_nas_plmn_id_t nas_plmn_id;
uint16_t tac; uint16_t tac;
} __attribute__ ((packed)) ogs_gtp_uli_tai_t; } __attribute__ ((packed)) ogs_gtp2_uli_tai_t;
typedef struct ogs_gtp_uli_e_cgi_s { typedef struct ogs_gtp2_uli_e_cgi_s {
ogs_nas_plmn_id_t nas_plmn_id; ogs_nas_plmn_id_t nas_plmn_id;
uint32_t cell_id; uint32_t cell_id;
} __attribute__ ((packed)) ogs_gtp_uli_e_cgi_t; } __attribute__ ((packed)) ogs_gtp2_uli_e_cgi_t;
typedef struct ogs_gtp_uli_s { typedef struct ogs_gtp2_uli_s {
struct { struct {
ED7(uint8_t spare:2;, ED7(uint8_t spare:2;,
uint8_t lai:1;, uint8_t lai:1;,
@ -399,94 +399,94 @@ typedef struct ogs_gtp_uli_s {
uint8_t sai:1;, uint8_t sai:1;,
uint8_t cgi:1;) uint8_t cgi:1;)
} flags; } flags;
ogs_gtp_uli_cgi_t cgi; ogs_gtp2_uli_cgi_t cgi;
ogs_gtp_uli_sai_t sai; ogs_gtp2_uli_sai_t sai;
ogs_gtp_uli_rai_t rai; ogs_gtp2_uli_rai_t rai;
ogs_gtp_uli_tai_t tai; ogs_gtp2_uli_tai_t tai;
ogs_gtp_uli_e_cgi_t e_cgi; ogs_gtp2_uli_e_cgi_t e_cgi;
ogs_gtp_uli_lai_t lai; ogs_gtp2_uli_lai_t lai;
} ogs_gtp_uli_t; } ogs_gtp2_uli_t;
int16_t ogs_gtp_parse_uli(ogs_gtp_uli_t *uli, ogs_tlv_octet_t *octet); int16_t ogs_gtp2_parse_uli(ogs_gtp2_uli_t *uli, ogs_tlv_octet_t *octet);
int16_t ogs_gtp_build_uli(ogs_tlv_octet_t *octet, int16_t ogs_gtp2_build_uli(ogs_tlv_octet_t *octet,
ogs_gtp_uli_t *uli, void *data, int data_len); ogs_gtp2_uli_t *uli, void *data, int data_len);
/* 8.22 Fully Qualified TEID (F-TEID) */ /* 8.22 Fully Qualified TEID (F-TEID) */
#define OGS_GTP_F_TEID_S1_U_ENODEB_GTP_U 0 #define OGS_GTP2_F_TEID_S1_U_ENODEB_GTP_U 0
#define OGS_GTP_F_TEID_S1_U_SGW_GTP_U 1 #define OGS_GTP2_F_TEID_S1_U_SGW_GTP_U 1
#define OGS_GTP_F_TEID_S12_RNC_GTP_U 2 #define OGS_GTP2_F_TEID_S12_RNC_GTP_U 2
#define OGS_GTP_F_TEID_S12_SGW_GTP_U 3 #define OGS_GTP2_F_TEID_S12_SGW_GTP_U 3
#define OGS_GTP_F_TEID_S5_S8_SGW_GTP_U 4 #define OGS_GTP2_F_TEID_S5_S8_SGW_GTP_U 4
#define OGS_GTP_F_TEID_S5_S8_PGW_GTP_U 5 #define OGS_GTP2_F_TEID_S5_S8_PGW_GTP_U 5
#define OGS_GTP_F_TEID_S5_S8_SGW_GTP_C 6 #define OGS_GTP2_F_TEID_S5_S8_SGW_GTP_C 6
#define OGS_GTP_F_TEID_S5_S8_PGW_GTP_C 7 #define OGS_GTP2_F_TEID_S5_S8_PGW_GTP_C 7
#define OGS_GTP_F_TEID_S5_S8_SGW_PMIPV6 8 #define OGS_GTP2_F_TEID_S5_S8_SGW_PMIPV6 8
#define OGS_GTP_F_TEID_S5_S8_PGW_PMIPV6 9 #define OGS_GTP2_F_TEID_S5_S8_PGW_PMIPV6 9
#define OGS_GTP_F_TEID_S11_MME_GTP_C 10 #define OGS_GTP2_F_TEID_S11_MME_GTP_C 10
#define OGS_GTP_F_TEID_S11_S4_SGW_GTP_C 11 #define OGS_GTP2_F_TEID_S11_S4_SGW_GTP_C 11
#define OGS_GTP_F_TEID_S10_MME_GTP_C 12 #define OGS_GTP2_F_TEID_S10_MME_GTP_C 12
#define OGS_GTP_F_TEID_S3_MME_GTP_C 13 #define OGS_GTP2_F_TEID_S3_MME_GTP_C 13
#define OGS_GTP_F_TEID_S3_SGSN_GTP_C 14 #define OGS_GTP2_F_TEID_S3_SGSN_GTP_C 14
#define OGS_GTP_F_TEID_S4_SGSN_GTP_U 15 #define OGS_GTP2_F_TEID_S4_SGSN_GTP_U 15
#define OGS_GTP_F_TEID_S4_SGW_GTP_U 16 #define OGS_GTP2_F_TEID_S4_SGW_GTP_U 16
#define OGS_GTP_F_TEID_S4_SGSN_GTP_C 17 #define OGS_GTP2_F_TEID_S4_SGSN_GTP_C 17
#define OGS_GTP_F_TEID_S16_SGSN_GTP_C 18 #define OGS_GTP2_F_TEID_S16_SGSN_GTP_C 18
#define OGS_GTP_F_TEID_ENODEB_GTP_U_FOR_DL_DATA_FORWARDING 19 #define OGS_GTP2_F_TEID_ENODEB_GTP_U_FOR_DL_DATA_FORWARDING 19
#define OGS_GTP_F_TEID_ENODEB_GTP_U_FOR_UL_DATA_FORWARDING 20 #define OGS_GTP2_F_TEID_ENODEB_GTP_U_FOR_UL_DATA_FORWARDING 20
#define OGS_GTP_F_TEID_RNC_GTP_U_FOR_DATA_FORWARDING 21 #define OGS_GTP2_F_TEID_RNC_GTP_U_FOR_DATA_FORWARDING 21
#define OGS_GTP_F_TEID_SGSN_GTP_U_FOR_DATA_FORWARDING 22 #define OGS_GTP2_F_TEID_SGSN_GTP_U_FOR_DATA_FORWARDING 22
#define OGS_GTP_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING 23 #define OGS_GTP2_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING 23
#define OGS_GTP_F_TEID_SM_MBMS_GW_GTP_C 24 #define OGS_GTP2_F_TEID_SM_MBMS_GW_GTP_C 24
#define OGS_GTP_F_TEID_SN_MBMS_GW_GTP_C 25 #define OGS_GTP2_F_TEID_SN_MBMS_GW_GTP_C 25
#define OGS_GTP_F_TEID_SM_MME_GTP_C 26 #define OGS_GTP2_F_TEID_SM_MME_GTP_C 26
#define OGS_GTP_F_TEID_SN_SGSN_GTP_C 27 #define OGS_GTP2_F_TEID_SN_SGSN_GTP_C 27
#define OGS_GTP_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING 28 #define OGS_GTP2_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING 28
#define OGS_GTP_F_TEID_SN_SGSN_GTP_U 29 #define OGS_GTP2_F_TEID_SN_SGSN_GTP_U 29
#define OGS_GTP_F_TEID_S2B_EPDG_GTP_C 30 #define OGS_GTP2_F_TEID_S2B_EPDG_GTP_C 30
#define OGS_GTP_F_TEID_S2B_U_EPDG_GTP_U 31 #define OGS_GTP2_F_TEID_S2B_U_EPDG_GTP_U 31
#define OGS_GTP_F_TEID_S2B_PGW_GTP_C 32 #define OGS_GTP2_F_TEID_S2B_PGW_GTP_C 32
#define OGS_GTP_F_TEID_S2B_U_PGW_GTP_U 33 #define OGS_GTP2_F_TEID_S2B_U_PGW_GTP_U 33
#define OGS_GTP_F_TEID_S2A_TWAN_GTP_U 34 #define OGS_GTP2_F_TEID_S2A_TWAN_GTP_U 34
#define OGS_GTP_F_TEID_S2A_TWAN_GTP_C 35 #define OGS_GTP2_F_TEID_S2A_TWAN_GTP_C 35
#define OGS_GTP_F_TEID_S2A_PGW_GTP_C 36 #define OGS_GTP2_F_TEID_S2A_PGW_GTP_C 36
#define OGS_GTP_F_TEID_S2A_PGW_GTP_U 37 #define OGS_GTP2_F_TEID_S2A_PGW_GTP_U 37
#define OGS_GTP_F_TEID_S11_MME_GTP_U 38 #define OGS_GTP2_F_TEID_S11_MME_GTP_U 38
#define OGS_GTP_F_TEID_S11_SGW_GTP_U 39 #define OGS_GTP2_F_TEID_S11_SGW_GTP_U 39
#define OGS_GTP_F_TEID_HDR_LEN 5 #define OGS_GTP2_F_TEID_HDR_LEN 5
#define OGS_GTP_F_TEID_IPV4_LEN OGS_IPV4_LEN+OGS_GTP_F_TEID_HDR_LEN #define OGS_GTP2_F_TEID_IPV4_LEN OGS_IPV4_LEN+OGS_GTP2_F_TEID_HDR_LEN
#define OGS_GTP_F_TEID_IPV6_LEN OGS_IPV6_LEN+OGS_GTP_F_TEID_HDR_LEN #define OGS_GTP2_F_TEID_IPV6_LEN OGS_IPV6_LEN+OGS_GTP2_F_TEID_HDR_LEN
#define OGS_GTP_F_TEID_IPV4V6_LEN OGS_IPV4V6_LEN+OGS_GTP_F_TEID_HDR_LEN #define OGS_GTP2_F_TEID_IPV4V6_LEN OGS_IPV4V6_LEN+OGS_GTP2_F_TEID_HDR_LEN
typedef struct ogs_gtp_f_teid_s { typedef struct ogs_gtp2_f_teid_s {
ED3(uint8_t ipv4:1;, ED3(uint8_t ipv4:1;,
uint8_t ipv6:1;, uint8_t ipv6:1;,
uint8_t interface_type:6;) uint8_t interface_type:6;)
uint32_t teid; uint32_t teid;
union { union {
/* OGS_GTP_F_TEID_IPV4 */ /* OGS_GTP2_F_TEID_IPV4 */
uint32_t addr; uint32_t addr;
/* OGS_GTP_F_TEID_IPV6 */ /* OGS_GTP2_F_TEID_IPV6 */
uint8_t addr6[OGS_IPV6_LEN]; uint8_t addr6[OGS_IPV6_LEN];
/* OGS_GTP_F_TEID_BOTH */ /* OGS_GTP2_F_TEID_BOTH */
struct { struct {
uint32_t addr; uint32_t addr;
uint8_t addr6[OGS_IPV6_LEN]; uint8_t addr6[OGS_IPV6_LEN];
} both; } both;
}; };
} __attribute__ ((packed)) ogs_gtp_f_teid_t; } __attribute__ ((packed)) ogs_gtp2_f_teid_t;
/* 8.44 UE Time Zone */ /* 8.44 UE Time Zone */
#define OGS_GTP_UE_TIME_ZONE_NO_ADJUSTMENT_FOR_DAYLIGHT_SAVING_TIME 0 #define OGS_GTP2_UE_TIME_ZONE_NO_ADJUSTMENT_FOR_DAYLIGHT_SAVING_TIME 0
#define OGS_GTP_UE_TIME_ZONE_1_HOUR_FOR_DAYLIGHT_SAVING_TIME 1 #define OGS_GTP2_UE_TIME_ZONE_1_HOUR_FOR_DAYLIGHT_SAVING_TIME 1
#define OGS_GTP_UE_TIME_ZONE_2_HOUR_FOR_DAYLIGHT_SAVING_TIME 2 #define OGS_GTP2_UE_TIME_ZONE_2_HOUR_FOR_DAYLIGHT_SAVING_TIME 2
/* Time Zone" IE in 3GPP TS 24.008 [5]. /* Time Zone" IE in 3GPP TS 24.008 [5].
* This field uses the same format as the Timezone field used in the * This field uses the same format as the Timezone field used in the
* TP-Service-Centre-Time-Stamp, which is defined in 3GPP TS 23.040 [90], * TP-Service-Centre-Time-Stamp, which is defined in 3GPP TS 23.040 [90],
* and its value shall be set as defined in 3GPP TS 22.042 */ * and its value shall be set as defined in 3GPP TS 22.042 */
typedef struct ogs_gtp_ue_timezone_s { typedef struct ogs_gtp2_ue_timezone_s {
#define OGS_GTP_TIME_TO_BCD(x) OGS_TIME_TO_BCD(x) #define OGS_GTP2_TIME_TO_BCD(x) OGS_TIME_TO_BCD(x)
/* The Time Zone indicates the difference, expressed in quarters of an hour, /* The Time Zone indicates the difference, expressed in quarters of an hour,
* between the local time and GMT. In the first of the two semi-octets, * between the local time and GMT. In the first of the two semi-octets,
* the first bit (bit 3 of the seventh octet of * the first bit (bit 3 of the seventh octet of
@ -495,36 +495,36 @@ typedef struct ogs_gtp_ue_timezone_s {
uint8_t timezone; uint8_t timezone;
ED2(uint8_t spare:6;, ED2(uint8_t spare:6;,
uint8_t daylight_saving_time:2;) uint8_t daylight_saving_time:2;)
} __attribute__ ((packed)) ogs_gtp_ue_timezone_t; } __attribute__ ((packed)) ogs_gtp2_ue_timezone_t;
/* 8.57 APN Restriction */ /* 8.57 APN Restriction */
#define OGS_GTP_APN_NO_RESTRICTION 0 #define OGS_GTP2_APN_NO_RESTRICTION 0
#define OGS_GTP_APN_RESTRICTION_PUBLIC_1 1 #define OGS_GTP2_APN_RESTRICTION_PUBLIC_1 1
#define OGS_GTP_APN_RESTRICTION_PUBLIC_2 2 #define OGS_GTP2_APN_RESTRICTION_PUBLIC_2 2
#define OGS_GTP_APN_RESTRICTION_PRIVATE_1 3 #define OGS_GTP2_APN_RESTRICTION_PRIVATE_1 3
#define OGS_GTP_APN_RESTRICTION_PRIVATE_2 4 #define OGS_GTP2_APN_RESTRICTION_PRIVATE_2 4
/* 8.58 Selection Mode */ /* 8.58 Selection Mode */
#define OGS_GTP_SELECTION_MODE_MS_OR_NETWORK_PROVIDED_APN 0 #define OGS_GTP2_SELECTION_MODE_MS_OR_NETWORK_PROVIDED_APN 0
#define OGS_GTP_SELECTION_MODE_MS_PROVIDED_APN 1 #define OGS_GTP2_SELECTION_MODE_MS_PROVIDED_APN 1
#define OGS_GTP_SELECTION_MODE_NETWORK_PROVIDED_APN 2 #define OGS_GTP2_SELECTION_MODE_NETWORK_PROVIDED_APN 2
/* 8.65 Node Type */ /* 8.65 Node Type */
#define OGS_GTP_NODE_TYPE_MME 0 #define OGS_GTP2_NODE_TYPE_MME 0
#define OGS_GTP_NODE_TYPE_SGSN 1 #define OGS_GTP2_NODE_TYPE_SGSN 1
/* 8.86 Allocation/Retention Priority (ARP) */ /* 8.86 Allocation/Retention Priority (ARP) */
typedef struct ogs_gtp_arp_s { typedef struct ogs_gtp2_arp_s {
#define OGS_GTP_TIME_TO_BCD(x) OGS_TIME_TO_BCD(x) #define OGS_GTP2_TIME_TO_BCD(x) OGS_TIME_TO_BCD(x)
ED5(uint8_t spare1:1;, ED5(uint8_t spare1:1;,
uint8_t pre_emption_vulnerability:1;, uint8_t pre_emption_vulnerability:1;,
uint8_t priority_level:4;, uint8_t priority_level:4;,
uint8_t spare2:1;, uint8_t spare2:1;,
uint8_t pre_emption_capability:1;) uint8_t pre_emption_capability:1;)
} __attribute__ ((packed)) ogs_gtp_arp_t; } __attribute__ ((packed)) ogs_gtp2_arp_t;
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* OGS_GTP_TYPES_H */ #endif /* OGS_GTP2_TYPES_H */

View File

@ -120,7 +120,7 @@ ogs_gtp_xact_t *ogs_gtp1_xact_local_create(ogs_gtp_node_t *gnode,
} }
ogs_gtp_xact_t *ogs_gtp_xact_local_create(ogs_gtp_node_t *gnode, ogs_gtp_xact_t *ogs_gtp_xact_local_create(ogs_gtp_node_t *gnode,
ogs_gtp_header_t *hdesc, ogs_pkbuf_t *pkbuf, ogs_gtp2_header_t *hdesc, ogs_pkbuf_t *pkbuf,
void (*cb)(ogs_gtp_xact_t *xact, void *data), void *data) void (*cb)(ogs_gtp_xact_t *xact, void *data), void *data)
{ {
int rv; int rv;
@ -139,9 +139,9 @@ ogs_gtp_xact_t *ogs_gtp_xact_local_create(ogs_gtp_node_t *gnode,
xact->org = OGS_GTP_LOCAL_ORIGINATOR; xact->org = OGS_GTP_LOCAL_ORIGINATOR;
xact->xid = OGS_NEXT_ID(g_xact_id, xact->xid = OGS_NEXT_ID(g_xact_id,
OGS_GTP_MIN_XACT_ID, OGS_GTP_CMD_XACT_ID); OGS_GTP_MIN_XACT_ID, OGS_GTP_CMD_XACT_ID);
if (hdesc->type == OGS_GTP_MODIFY_BEARER_COMMAND_TYPE || if (hdesc->type == OGS_GTP2_MODIFY_BEARER_COMMAND_TYPE ||
hdesc->type == OGS_GTP_DELETE_BEARER_COMMAND_TYPE || hdesc->type == OGS_GTP2_DELETE_BEARER_COMMAND_TYPE ||
hdesc->type == OGS_GTP_BEARER_RESOURCE_COMMAND_TYPE) { hdesc->type == OGS_GTP2_BEARER_RESOURCE_COMMAND_TYPE) {
xact->xid |= OGS_GTP_CMD_XACT_ID; xact->xid |= OGS_GTP_CMD_XACT_ID;
} }
xact->gnode = gnode; xact->gnode = gnode;
@ -191,7 +191,7 @@ static ogs_gtp_xact_t *ogs_gtp_xact_remote_create(ogs_gtp_node_t *gnode, uint8_t
xact->gtp_version = gtp_version; xact->gtp_version = gtp_version;
xact->org = OGS_GTP_REMOTE_ORIGINATOR; xact->org = OGS_GTP_REMOTE_ORIGINATOR;
xact->xid = (gtp_version == 1) ? OGS_GTP1_SQN_TO_XID(sqn) : OGS_GTP_SQN_TO_XID(sqn); xact->xid = (gtp_version == 1) ? OGS_GTP1_SQN_TO_XID(sqn) : OGS_GTP2_SQN_TO_XID(sqn);
xact->gnode = gnode; xact->gnode = gnode;
xact->tm_response = ogs_timer_add( xact->tm_response = ogs_timer_add(
@ -333,11 +333,11 @@ int ogs_gtp1_xact_update_tx(ogs_gtp_xact_t *xact,
} }
int ogs_gtp_xact_update_tx(ogs_gtp_xact_t *xact, int ogs_gtp_xact_update_tx(ogs_gtp_xact_t *xact,
ogs_gtp_header_t *hdesc, ogs_pkbuf_t *pkbuf) ogs_gtp2_header_t *hdesc, ogs_pkbuf_t *pkbuf)
{ {
char buf[OGS_ADDRSTRLEN]; char buf[OGS_ADDRSTRLEN];
ogs_gtp_xact_stage_t stage; ogs_gtp_xact_stage_t stage;
ogs_gtp_header_t *h = NULL; ogs_gtp2_header_t *h = NULL;
int gtp_hlen = 0; int gtp_hlen = 0;
ogs_assert(xact); ogs_assert(xact);
@ -407,26 +407,26 @@ int ogs_gtp_xact_update_tx(ogs_gtp_xact_t *xact,
return OGS_ERROR; return OGS_ERROR;
} }
if (hdesc->type > OGS_GTP_VERSION_NOT_SUPPORTED_INDICATION_TYPE) { if (hdesc->type > OGS_GTP2_VERSION_NOT_SUPPORTED_INDICATION_TYPE) {
gtp_hlen = OGS_GTPV2C_HEADER_LEN; gtp_hlen = OGS_GTPV2C_HEADER_LEN;
} else { } else {
gtp_hlen = OGS_GTPV2C_HEADER_LEN - OGS_GTP_TEID_LEN; gtp_hlen = OGS_GTPV2C_HEADER_LEN - OGS_GTP2_TEID_LEN;
} }
ogs_pkbuf_push(pkbuf, gtp_hlen); ogs_pkbuf_push(pkbuf, gtp_hlen);
h = (ogs_gtp_header_t *)pkbuf->data; h = (ogs_gtp2_header_t *)pkbuf->data;
memset(h, 0, gtp_hlen); memset(h, 0, gtp_hlen);
h->version = 2; h->version = 2;
h->type = hdesc->type; h->type = hdesc->type;
if (hdesc->type > OGS_GTP_VERSION_NOT_SUPPORTED_INDICATION_TYPE) { if (hdesc->type > OGS_GTP2_VERSION_NOT_SUPPORTED_INDICATION_TYPE) {
h->teid_presence = 1; h->teid_presence = 1;
h->teid = htobe32(hdesc->teid); h->teid = htobe32(hdesc->teid);
h->sqn = OGS_GTP_XID_TO_SQN(xact->xid); h->sqn = OGS_GTP2_XID_TO_SQN(xact->xid);
} else { } else {
h->teid_presence = 0; h->teid_presence = 0;
h->sqn_only = OGS_GTP_XID_TO_SQN(xact->xid); h->sqn_only = OGS_GTP2_XID_TO_SQN(xact->xid);
} }
h->length = htobe16(pkbuf->len - 4); h->length = htobe16(pkbuf->len - 4);
@ -857,7 +857,7 @@ int ogs_gtp1_xact_receive(
} }
int ogs_gtp_xact_receive( int ogs_gtp_xact_receive(
ogs_gtp_node_t *gnode, ogs_gtp_header_t *h, ogs_gtp_xact_t **xact) ogs_gtp_node_t *gnode, ogs_gtp2_header_t *h, ogs_gtp_xact_t **xact)
{ {
char buf[OGS_ADDRSTRLEN]; char buf[OGS_ADDRSTRLEN];
int rv; int rv;
@ -870,7 +870,7 @@ int ogs_gtp_xact_receive(
if (h->teid_presence) sqn = h->sqn; if (h->teid_presence) sqn = h->sqn;
else sqn = h->sqn_only; else sqn = h->sqn_only;
new = ogs_gtp_xact_find_by_xid(gnode, h->type, 2, OGS_GTP_SQN_TO_XID(sqn)); new = ogs_gtp_xact_find_by_xid(gnode, h->type, 2, OGS_GTP2_SQN_TO_XID(sqn));
if (!new) if (!new)
new = ogs_gtp_xact_remote_create(gnode, 2, sqn); new = ogs_gtp_xact_remote_create(gnode, 2, sqn);
ogs_assert(new); ogs_assert(new);
@ -951,41 +951,41 @@ static ogs_gtp_xact_stage_t ogs_gtp_xact_get_stage(uint8_t type, uint32_t xid)
ogs_gtp_xact_stage_t stage = GTP_XACT_UNKNOWN_STAGE; ogs_gtp_xact_stage_t stage = GTP_XACT_UNKNOWN_STAGE;
switch (type) { switch (type) {
case OGS_GTP_CREATE_SESSION_REQUEST_TYPE: case OGS_GTP2_CREATE_SESSION_REQUEST_TYPE:
case OGS_GTP_MODIFY_BEARER_REQUEST_TYPE: case OGS_GTP2_MODIFY_BEARER_REQUEST_TYPE:
case OGS_GTP_DELETE_SESSION_REQUEST_TYPE: case OGS_GTP2_DELETE_SESSION_REQUEST_TYPE:
case OGS_GTP_MODIFY_BEARER_COMMAND_TYPE: case OGS_GTP2_MODIFY_BEARER_COMMAND_TYPE:
case OGS_GTP_DELETE_BEARER_COMMAND_TYPE: case OGS_GTP2_DELETE_BEARER_COMMAND_TYPE:
case OGS_GTP_BEARER_RESOURCE_COMMAND_TYPE: case OGS_GTP2_BEARER_RESOURCE_COMMAND_TYPE:
case OGS_GTP_RELEASE_ACCESS_BEARERS_REQUEST_TYPE: case OGS_GTP2_RELEASE_ACCESS_BEARERS_REQUEST_TYPE:
case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE: case OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE:
case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE: case OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE:
case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_TYPE: case OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_TYPE:
case OGS_GTP_ECHO_REQUEST_TYPE: case OGS_GTP2_ECHO_REQUEST_TYPE:
stage = GTP_XACT_INITIAL_STAGE; stage = GTP_XACT_INITIAL_STAGE;
break; break;
case OGS_GTP_CREATE_BEARER_REQUEST_TYPE: case OGS_GTP2_CREATE_BEARER_REQUEST_TYPE:
case OGS_GTP_UPDATE_BEARER_REQUEST_TYPE: case OGS_GTP2_UPDATE_BEARER_REQUEST_TYPE:
case OGS_GTP_DELETE_BEARER_REQUEST_TYPE: case OGS_GTP2_DELETE_BEARER_REQUEST_TYPE:
if (xid & OGS_GTP_CMD_XACT_ID) if (xid & OGS_GTP_CMD_XACT_ID)
stage = GTP_XACT_INTERMEDIATE_STAGE; stage = GTP_XACT_INTERMEDIATE_STAGE;
else else
stage = GTP_XACT_INITIAL_STAGE; stage = GTP_XACT_INITIAL_STAGE;
break; break;
case OGS_GTP_CREATE_SESSION_RESPONSE_TYPE: case OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE:
case OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE: case OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE:
case OGS_GTP_DELETE_SESSION_RESPONSE_TYPE: case OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE:
case OGS_GTP_MODIFY_BEARER_FAILURE_INDICATION_TYPE: case OGS_GTP2_MODIFY_BEARER_FAILURE_INDICATION_TYPE:
case OGS_GTP_DELETE_BEARER_FAILURE_INDICATION_TYPE: case OGS_GTP2_DELETE_BEARER_FAILURE_INDICATION_TYPE:
case OGS_GTP_BEARER_RESOURCE_FAILURE_INDICATION_TYPE: case OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE:
case OGS_GTP_CREATE_BEARER_RESPONSE_TYPE: case OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE:
case OGS_GTP_UPDATE_BEARER_RESPONSE_TYPE: case OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE:
case OGS_GTP_DELETE_BEARER_RESPONSE_TYPE: case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE:
case OGS_GTP_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE: case OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE:
case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE: case OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE: case OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE: case OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE:
case OGS_GTP_ECHO_RESPONSE_TYPE: case OGS_GTP2_ECHO_RESPONSE_TYPE:
stage = GTP_XACT_FINAL_STAGE; stage = GTP_XACT_FINAL_STAGE;
break; break;
@ -1028,9 +1028,9 @@ static ogs_gtp_xact_t *ogs_gtp_xact_find_by_xid(
case 2: case 2:
default: default:
if (xid & OGS_GTP_CMD_XACT_ID) { if (xid & OGS_GTP_CMD_XACT_ID) {
if (type == OGS_GTP_MODIFY_BEARER_FAILURE_INDICATION_TYPE || if (type == OGS_GTP2_MODIFY_BEARER_FAILURE_INDICATION_TYPE ||
type == OGS_GTP_DELETE_BEARER_FAILURE_INDICATION_TYPE || type == OGS_GTP2_DELETE_BEARER_FAILURE_INDICATION_TYPE ||
type == OGS_GTP_BEARER_RESOURCE_FAILURE_INDICATION_TYPE) { type == OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE) {
list = &gnode->local_list; list = &gnode->local_list;
} else { } else {
list = &gnode->remote_list; list = &gnode->remote_list;

View File

@ -121,7 +121,7 @@ ogs_gtp_xact_t *ogs_gtp1_xact_local_create(ogs_gtp_node_t *gnode,
ogs_gtp1_header_t *hdesc, ogs_pkbuf_t *pkbuf, ogs_gtp1_header_t *hdesc, ogs_pkbuf_t *pkbuf,
void (*cb)(ogs_gtp_xact_t *xact, void *data), void *data); void (*cb)(ogs_gtp_xact_t *xact, void *data), void *data);
ogs_gtp_xact_t *ogs_gtp_xact_local_create(ogs_gtp_node_t *gnode, ogs_gtp_xact_t *ogs_gtp_xact_local_create(ogs_gtp_node_t *gnode,
ogs_gtp_header_t *hdesc, ogs_pkbuf_t *pkbuf, ogs_gtp2_header_t *hdesc, ogs_pkbuf_t *pkbuf,
void (*cb)(ogs_gtp_xact_t *xact, void *data), void *data); void (*cb)(ogs_gtp_xact_t *xact, void *data), void *data);
ogs_gtp_xact_t *ogs_gtp_xact_cycle(ogs_gtp_xact_t *xact); ogs_gtp_xact_t *ogs_gtp_xact_cycle(ogs_gtp_xact_t *xact);
@ -130,14 +130,14 @@ void ogs_gtp_xact_delete_all(ogs_gtp_node_t *gnode);
int ogs_gtp1_xact_update_tx(ogs_gtp_xact_t *xact, int ogs_gtp1_xact_update_tx(ogs_gtp_xact_t *xact,
ogs_gtp1_header_t *hdesc, ogs_pkbuf_t *pkbuf); ogs_gtp1_header_t *hdesc, ogs_pkbuf_t *pkbuf);
int ogs_gtp_xact_update_tx(ogs_gtp_xact_t *xact, int ogs_gtp_xact_update_tx(ogs_gtp_xact_t *xact,
ogs_gtp_header_t *hdesc, ogs_pkbuf_t *pkbuf); ogs_gtp2_header_t *hdesc, ogs_pkbuf_t *pkbuf);
int ogs_gtp_xact_commit(ogs_gtp_xact_t *xact); int ogs_gtp_xact_commit(ogs_gtp_xact_t *xact);
int ogs_gtp1_xact_receive(ogs_gtp_node_t *gnode, int ogs_gtp1_xact_receive(ogs_gtp_node_t *gnode,
ogs_gtp1_header_t *h, ogs_gtp_xact_t **xact); ogs_gtp1_header_t *h, ogs_gtp_xact_t **xact);
int ogs_gtp_xact_receive(ogs_gtp_node_t *gnode, int ogs_gtp_xact_receive(ogs_gtp_node_t *gnode,
ogs_gtp_header_t *h, ogs_gtp_xact_t **xact); ogs_gtp2_header_t *h, ogs_gtp_xact_t **xact);
void ogs_gtp_xact_associate(ogs_gtp_xact_t *xact1, ogs_gtp_xact_t *xact2); void ogs_gtp_xact_associate(ogs_gtp_xact_t *xact1, ogs_gtp_xact_t *xact2);
void ogs_gtp_xact_deassociate(ogs_gtp_xact_t *xact1, ogs_gtp_xact_t *xact2); void ogs_gtp_xact_deassociate(ogs_gtp_xact_t *xact1, ogs_gtp_xact_t *xact2);

View File

@ -279,8 +279,8 @@ void ogs_pfcp_send_g_pdu(ogs_pfcp_pdr_t *pdr, ogs_pkbuf_t *sendbuf)
ogs_gtp_node_t *gnode = NULL; ogs_gtp_node_t *gnode = NULL;
ogs_pfcp_far_t *far = NULL; ogs_pfcp_far_t *far = NULL;
ogs_gtp_header_t gtp_hdesc; ogs_gtp2_header_t gtp_hdesc;
ogs_gtp_extension_header_t ext_hdesc; ogs_gtp2_extension_header_t ext_hdesc;
ogs_assert(pdr); ogs_assert(pdr);
ogs_assert(sendbuf); ogs_assert(sendbuf);
@ -310,7 +310,7 @@ void ogs_pfcp_send_g_pdu(ogs_pfcp_pdr_t *pdr, ogs_pkbuf_t *sendbuf)
if (pdr->qer && pdr->qer->qfi) if (pdr->qer && pdr->qer->qfi)
ext_hdesc.qos_flow_identifier = pdr->qer->qfi; ext_hdesc.qos_flow_identifier = pdr->qer->qfi;
ogs_gtp_send_user_plane(gnode, &gtp_hdesc, &ext_hdesc, sendbuf); ogs_gtp2_send_user_plane(gnode, &gtp_hdesc, &ext_hdesc, sendbuf);
} }
int ogs_pfcp_send_end_marker(ogs_pfcp_pdr_t *pdr) int ogs_pfcp_send_end_marker(ogs_pfcp_pdr_t *pdr)
@ -320,8 +320,8 @@ int ogs_pfcp_send_end_marker(ogs_pfcp_pdr_t *pdr)
ogs_pkbuf_t *sendbuf = NULL; ogs_pkbuf_t *sendbuf = NULL;
ogs_gtp_header_t gtp_hdesc; ogs_gtp2_header_t gtp_hdesc;
ogs_gtp_extension_header_t ext_hdesc; ogs_gtp2_extension_header_t ext_hdesc;
ogs_assert(pdr); ogs_assert(pdr);
far = pdr->far; far = pdr->far;
@ -349,7 +349,7 @@ int ogs_pfcp_send_end_marker(ogs_pfcp_pdr_t *pdr)
if (pdr->qer && pdr->qer->qfi) if (pdr->qer && pdr->qer->qfi)
ext_hdesc.qos_flow_identifier = pdr->qer->qfi; ext_hdesc.qos_flow_identifier = pdr->qer->qfi;
ogs_gtp_send_user_plane(gnode, &gtp_hdesc, &ext_hdesc, sendbuf); ogs_gtp2_send_user_plane(gnode, &gtp_hdesc, &ext_hdesc, sendbuf);
return OGS_OK; return OGS_OK;
} }

View File

@ -587,7 +587,7 @@ static void common_register_state(ogs_fsm_t *s, mme_event_t *e)
mme_ue->imsi_bcd); mme_ue->imsi_bcd);
CLEAR_MME_UE_TIMER(mme_ue->t3413); CLEAR_MME_UE_TIMER(mme_ue->t3413);
mme_send_after_paging(mme_ue, OGS_GTP_CAUSE_UNABLE_TO_PAGE_UE); mme_send_after_paging(mme_ue, OGS_GTP2_CAUSE_UNABLE_TO_PAGE_UE);
if (CS_CALL_SERVICE_INDICATOR(mme_ue) || if (CS_CALL_SERVICE_INDICATOR(mme_ue) ||
SMS_SERVICE_INDICATOR(mme_ue)) { SMS_SERVICE_INDICATOR(mme_ue)) {

View File

@ -36,18 +36,18 @@ static uint8_t gtp_cause_from_esm(uint8_t esm_cause)
{ {
switch (esm_cause) { switch (esm_cause) {
case ESM_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION: case ESM_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION:
return OGS_GTP_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION; return OGS_GTP2_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION;
case ESM_CAUSE_SYNTACTICAL_ERROR_IN_THE_TFT_OPERATION: case ESM_CAUSE_SYNTACTICAL_ERROR_IN_THE_TFT_OPERATION:
return OGS_GTP_CAUSE_SYNTACTIC_ERROR_IN_THE_TFT_OPERATION; return OGS_GTP2_CAUSE_SYNTACTIC_ERROR_IN_THE_TFT_OPERATION;
case ESM_CAUSE_SYNTACTICAL_ERROR_IN_PACKET_FILTERS: case ESM_CAUSE_SYNTACTICAL_ERROR_IN_PACKET_FILTERS:
return OGS_GTP_CAUSE_SYNTACTIC_ERRORS_IN_PACKET_FILTER; return OGS_GTP2_CAUSE_SYNTACTIC_ERRORS_IN_PACKET_FILTER;
case ESM_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTERS: case ESM_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTERS:
return OGS_GTP_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTER; return OGS_GTP2_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTER;
default: default:
break; break;
} }
return OGS_GTP_CAUSE_SYSTEM_FAILURE; return OGS_GTP2_CAUSE_SYSTEM_FAILURE;
} }
void esm_state_initial(ogs_fsm_t *s, mme_event_t *e) void esm_state_initial(ogs_fsm_t *s, mme_event_t *e)
@ -195,7 +195,7 @@ void esm_state_inactive(ogs_fsm_t *s, mme_event_t *e)
if (MME_HAVE_ENB_S1U_PATH(bearer)) { if (MME_HAVE_ENB_S1U_PATH(bearer)) {
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
mme_gtp_send_create_bearer_response( mme_gtp_send_create_bearer_response(
bearer, OGS_GTP_CAUSE_REQUEST_ACCEPTED)); bearer, OGS_GTP2_CAUSE_REQUEST_ACCEPTED));
} }
OGS_FSM_TRAN(s, esm_state_active); OGS_FSM_TRAN(s, esm_state_active);
@ -318,7 +318,7 @@ void esm_state_active(ogs_fsm_t *s, mme_event_t *e)
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
mme_gtp_send_update_bearer_response( mme_gtp_send_update_bearer_response(
bearer, OGS_GTP_CAUSE_REQUEST_ACCEPTED)); bearer, OGS_GTP2_CAUSE_REQUEST_ACCEPTED));
break; break;
case OGS_NAS_EPS_DEACTIVATE_EPS_BEARER_CONTEXT_ACCEPT: case OGS_NAS_EPS_DEACTIVATE_EPS_BEARER_CONTEXT_ACCEPT:
ogs_debug("Deactivate EPS bearer " ogs_debug("Deactivate EPS bearer "
@ -327,7 +327,7 @@ void esm_state_active(ogs_fsm_t *s, mme_event_t *e)
mme_ue->imsi_bcd, sess->pti, bearer->ebi); mme_ue->imsi_bcd, sess->pti, bearer->ebi);
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
mme_gtp_send_delete_bearer_response( mme_gtp_send_delete_bearer_response(
bearer, OGS_GTP_CAUSE_REQUEST_ACCEPTED)); bearer, OGS_GTP2_CAUSE_REQUEST_ACCEPTED));
OGS_FSM_TRAN(s, esm_state_bearer_deactivated); OGS_FSM_TRAN(s, esm_state_bearer_deactivated);
break; break;
case OGS_NAS_EPS_BEARER_RESOURCE_ALLOCATION_REQUEST: case OGS_NAS_EPS_BEARER_RESOURCE_ALLOCATION_REQUEST:

View File

@ -86,21 +86,21 @@ static void timeout(ogs_gtp_xact_t *xact, void *data)
type = xact->seq[0].type; type = xact->seq[0].type;
switch (type) { switch (type) {
case OGS_GTP_RELEASE_ACCESS_BEARERS_REQUEST_TYPE: case OGS_GTP2_RELEASE_ACCESS_BEARERS_REQUEST_TYPE:
case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE: case OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE:
case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE: case OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE:
mme_ue = data; mme_ue = data;
ogs_assert(mme_ue); ogs_assert(mme_ue);
break; break;
case OGS_GTP_CREATE_SESSION_REQUEST_TYPE: case OGS_GTP2_CREATE_SESSION_REQUEST_TYPE:
case OGS_GTP_DELETE_SESSION_REQUEST_TYPE: case OGS_GTP2_DELETE_SESSION_REQUEST_TYPE:
sess = data; sess = data;
ogs_assert(sess); ogs_assert(sess);
mme_ue = sess->mme_ue; mme_ue = sess->mme_ue;
ogs_assert(mme_ue); ogs_assert(mme_ue);
break; break;
case OGS_GTP_MODIFY_BEARER_REQUEST_TYPE: case OGS_GTP2_MODIFY_BEARER_REQUEST_TYPE:
case OGS_GTP_BEARER_RESOURCE_COMMAND_TYPE: case OGS_GTP2_BEARER_RESOURCE_COMMAND_TYPE:
bearer = data; bearer = data;
ogs_assert(bearer); ogs_assert(bearer);
sess = bearer->sess; sess = bearer->sess;
@ -117,7 +117,7 @@ static void timeout(ogs_gtp_xact_t *xact, void *data)
ogs_assert(mme_ue); ogs_assert(mme_ue);
switch (type) { switch (type) {
case OGS_GTP_DELETE_SESSION_REQUEST_TYPE: case OGS_GTP2_DELETE_SESSION_REQUEST_TYPE:
/* /*
* If SESSION_CONTEXT_WILL_DELETED(MME_UE) is not cleared, * If SESSION_CONTEXT_WILL_DELETED(MME_UE) is not cleared,
* The MME cannot send Delete-Session-Request to the SGW-C. * The MME cannot send Delete-Session-Request to the SGW-C.
@ -139,7 +139,7 @@ static void timeout(ogs_gtp_xact_t *xact, void *data)
ogs_warn("No S1 Context"); ogs_warn("No S1 Context");
} }
break; break;
case OGS_GTP_BEARER_RESOURCE_COMMAND_TYPE: case OGS_GTP2_BEARER_RESOURCE_COMMAND_TYPE:
/* Nothing to do */ /* Nothing to do */
break; break;
default: default:
@ -202,7 +202,7 @@ void mme_gtp_close(void)
int mme_gtp_send_create_session_request(mme_sess_t *sess, bool esm_piggybacked) int mme_gtp_send_create_session_request(mme_sess_t *sess, bool esm_piggybacked)
{ {
int rv; int rv;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
mme_ue_t *mme_ue = NULL; mme_ue_t *mme_ue = NULL;
@ -210,8 +210,8 @@ int mme_gtp_send_create_session_request(mme_sess_t *sess, bool esm_piggybacked)
mme_ue = sess->mme_ue; mme_ue = sess->mme_ue;
ogs_assert(mme_ue); ogs_assert(mme_ue);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_CREATE_SESSION_REQUEST_TYPE; h.type = OGS_GTP2_CREATE_SESSION_REQUEST_TYPE;
h.teid = mme_ue->sgw_s11_teid; h.teid = mme_ue->sgw_s11_teid;
pkbuf = mme_s11_build_create_session_request(h.type, sess); pkbuf = mme_s11_build_create_session_request(h.type, sess);
@ -234,15 +234,15 @@ int mme_gtp_send_modify_bearer_request(mme_bearer_t *bearer, int uli_presence)
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
mme_ue_t *mme_ue = NULL; mme_ue_t *mme_ue = NULL;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_assert(bearer); ogs_assert(bearer);
mme_ue = bearer->mme_ue; mme_ue = bearer->mme_ue;
ogs_assert(mme_ue); ogs_assert(mme_ue);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_MODIFY_BEARER_REQUEST_TYPE; h.type = OGS_GTP2_MODIFY_BEARER_REQUEST_TYPE;
h.teid = mme_ue->sgw_s11_teid; h.teid = mme_ue->sgw_s11_teid;
pkbuf = mme_s11_build_modify_bearer_request(h.type, bearer, uli_presence); pkbuf = mme_s11_build_modify_bearer_request(h.type, bearer, uli_presence);
@ -261,7 +261,7 @@ int mme_gtp_send_delete_session_request(mme_sess_t *sess, int action)
{ {
int rv; int rv;
ogs_pkbuf_t *s11buf = NULL; ogs_pkbuf_t *s11buf = NULL;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
mme_ue_t *mme_ue = NULL; mme_ue_t *mme_ue = NULL;
@ -270,8 +270,8 @@ int mme_gtp_send_delete_session_request(mme_sess_t *sess, int action)
mme_ue = sess->mme_ue; mme_ue = sess->mme_ue;
ogs_assert(mme_ue); ogs_assert(mme_ue);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_DELETE_SESSION_REQUEST_TYPE; h.type = OGS_GTP2_DELETE_SESSION_REQUEST_TYPE;
h.teid = mme_ue->sgw_s11_teid; h.teid = mme_ue->sgw_s11_teid;
s11buf = mme_s11_build_delete_session_request(h.type, sess); s11buf = mme_s11_build_delete_session_request(h.type, sess);
@ -332,7 +332,7 @@ int mme_gtp_send_create_bearer_response(
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
mme_ue_t *mme_ue = NULL; mme_ue_t *mme_ue = NULL;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_assert(bearer); ogs_assert(bearer);
@ -341,8 +341,8 @@ int mme_gtp_send_create_bearer_response(
xact = ogs_gtp_xact_cycle(bearer->create.xact); xact = ogs_gtp_xact_cycle(bearer->create.xact);
ogs_assert(xact); ogs_assert(xact);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_CREATE_BEARER_RESPONSE_TYPE; h.type = OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE;
h.teid = mme_ue->sgw_s11_teid; h.teid = mme_ue->sgw_s11_teid;
pkbuf = mme_s11_build_create_bearer_response(h.type, bearer, cause_value); pkbuf = mme_s11_build_create_bearer_response(h.type, bearer, cause_value);
@ -365,7 +365,7 @@ int mme_gtp_send_update_bearer_response(
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
mme_ue_t *mme_ue = NULL; mme_ue_t *mme_ue = NULL;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_assert(bearer); ogs_assert(bearer);
@ -374,8 +374,8 @@ int mme_gtp_send_update_bearer_response(
xact = ogs_gtp_xact_cycle(bearer->update.xact); xact = ogs_gtp_xact_cycle(bearer->update.xact);
ogs_assert(xact); ogs_assert(xact);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_UPDATE_BEARER_RESPONSE_TYPE; h.type = OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE;
h.teid = mme_ue->sgw_s11_teid; h.teid = mme_ue->sgw_s11_teid;
pkbuf = mme_s11_build_update_bearer_response(h.type, bearer, cause_value); pkbuf = mme_s11_build_update_bearer_response(h.type, bearer, cause_value);
@ -398,7 +398,7 @@ int mme_gtp_send_delete_bearer_response(
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
mme_ue_t *mme_ue = NULL; mme_ue_t *mme_ue = NULL;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_assert(bearer); ogs_assert(bearer);
@ -407,8 +407,8 @@ int mme_gtp_send_delete_bearer_response(
xact = ogs_gtp_xact_cycle(bearer->delete.xact); xact = ogs_gtp_xact_cycle(bearer->delete.xact);
ogs_assert(xact); ogs_assert(xact);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_DELETE_BEARER_RESPONSE_TYPE; h.type = OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE;
h.teid = mme_ue->sgw_s11_teid; h.teid = mme_ue->sgw_s11_teid;
pkbuf = mme_s11_build_delete_bearer_response(h.type, bearer, cause_value); pkbuf = mme_s11_build_delete_bearer_response(h.type, bearer, cause_value);
@ -426,15 +426,15 @@ int mme_gtp_send_delete_bearer_response(
int mme_gtp_send_release_access_bearers_request(mme_ue_t *mme_ue, int action) int mme_gtp_send_release_access_bearers_request(mme_ue_t *mme_ue, int action)
{ {
int rv; int rv;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
ogs_assert(action); ogs_assert(action);
ogs_assert(mme_ue); ogs_assert(mme_ue);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_RELEASE_ACCESS_BEARERS_REQUEST_TYPE; h.type = OGS_GTP2_RELEASE_ACCESS_BEARERS_REQUEST_TYPE;
h.teid = mme_ue->sgw_s11_teid; h.teid = mme_ue->sgw_s11_teid;
pkbuf = mme_s11_build_release_access_bearers_request(h.type); pkbuf = mme_s11_build_release_access_bearers_request(h.type);
@ -485,7 +485,7 @@ int mme_gtp_send_downlink_data_notification_ack(
mme_ue_t *mme_ue = NULL; mme_ue_t *mme_ue = NULL;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *s11buf = NULL; ogs_pkbuf_t *s11buf = NULL;
ogs_assert(bearer); ogs_assert(bearer);
@ -495,8 +495,8 @@ int mme_gtp_send_downlink_data_notification_ack(
ogs_assert(mme_ue); ogs_assert(mme_ue);
/* Build Downlink data notification ack */ /* Build Downlink data notification ack */
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE; h.type = OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE;
h.teid = mme_ue->sgw_s11_teid; h.teid = mme_ue->sgw_s11_teid;
s11buf = mme_s11_build_downlink_data_notification_ack(h.type, cause_value); s11buf = mme_s11_build_downlink_data_notification_ack(h.type, cause_value);
@ -515,14 +515,14 @@ int mme_gtp_send_create_indirect_data_forwarding_tunnel_request(
mme_ue_t *mme_ue) mme_ue_t *mme_ue)
{ {
int rv; int rv;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
ogs_assert(mme_ue); ogs_assert(mme_ue);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE; h.type = OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE;
h.teid = mme_ue->sgw_s11_teid; h.teid = mme_ue->sgw_s11_teid;
pkbuf = mme_s11_build_create_indirect_data_forwarding_tunnel_request( pkbuf = mme_s11_build_create_indirect_data_forwarding_tunnel_request(
@ -542,15 +542,15 @@ int mme_gtp_send_delete_indirect_data_forwarding_tunnel_request(
mme_ue_t *mme_ue, int action) mme_ue_t *mme_ue, int action)
{ {
int rv; int rv;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
ogs_assert(action); ogs_assert(action);
ogs_assert(mme_ue); ogs_assert(mme_ue);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE; h.type = OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE;
h.teid = mme_ue->sgw_s11_teid; h.teid = mme_ue->sgw_s11_teid;
pkbuf = ogs_pkbuf_alloc(NULL, OGS_TLV_MAX_HEADROOM); pkbuf = ogs_pkbuf_alloc(NULL, OGS_TLV_MAX_HEADROOM);
@ -571,7 +571,7 @@ int mme_gtp_send_bearer_resource_command(
mme_bearer_t *bearer, ogs_nas_eps_message_t *nas_message) mme_bearer_t *bearer, ogs_nas_eps_message_t *nas_message)
{ {
int rv; int rv;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
@ -581,8 +581,8 @@ int mme_gtp_send_bearer_resource_command(
mme_ue = bearer->mme_ue; mme_ue = bearer->mme_ue;
ogs_assert(mme_ue); ogs_assert(mme_ue);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_BEARER_RESOURCE_COMMAND_TYPE; h.type = OGS_GTP2_BEARER_RESOURCE_COMMAND_TYPE;
h.teid = mme_ue->sgw_s11_teid; h.teid = mme_ue->sgw_s11_teid;
pkbuf = mme_s11_build_bearer_resource_command(h.type, bearer, nas_message); pkbuf = mme_s11_build_bearer_resource_command(h.type, bearer, nas_message);

View File

@ -97,13 +97,13 @@ void mme_send_after_paging(mme_ue_t *mme_ue, uint8_t cause_value)
type = xact->seq[xact->step-1].type; type = xact->seq[xact->step-1].type;
switch (type) { switch (type) {
case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_TYPE: case OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_TYPE:
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
mme_gtp_send_downlink_data_notification_ack( mme_gtp_send_downlink_data_notification_ack(
bearer, cause_value)); bearer, cause_value));
break; break;
case OGS_GTP_CREATE_BEARER_REQUEST_TYPE: case OGS_GTP2_CREATE_BEARER_REQUEST_TYPE:
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
nas_eps_send_activate_dedicated_bearer_context_request( nas_eps_send_activate_dedicated_bearer_context_request(
bearer)); bearer));
@ -113,8 +113,8 @@ void mme_send_after_paging(mme_ue_t *mme_ue, uint8_t cause_value)
bearer, cause_value)); bearer, cause_value));
} }
break; break;
case OGS_GTP_UPDATE_BEARER_REQUEST_TYPE: case OGS_GTP2_UPDATE_BEARER_REQUEST_TYPE:
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
nas_eps_send_modify_bearer_context_request(bearer, nas_eps_send_modify_bearer_context_request(bearer,
(xact->update_flags & (xact->update_flags &
@ -127,8 +127,8 @@ void mme_send_after_paging(mme_ue_t *mme_ue, uint8_t cause_value)
bearer, cause_value)); bearer, cause_value));
} }
break; break;
case OGS_GTP_DELETE_BEARER_REQUEST_TYPE: case OGS_GTP2_DELETE_BEARER_REQUEST_TYPE:
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
nas_eps_send_deactivate_bearer_context_request(bearer)); nas_eps_send_deactivate_bearer_context_request(bearer));
} else { } else {

View File

@ -28,22 +28,22 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
ogs_session_t *session = NULL; ogs_session_t *session = NULL;
mme_ue_t *mme_ue = NULL; mme_ue_t *mme_ue = NULL;
mme_bearer_t *bearer = NULL; mme_bearer_t *bearer = NULL;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_create_session_request_t *req = &gtp_message.create_session_request; ogs_gtp2_create_session_request_t *req = &gtp_message.create_session_request;
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
char uli_buf[OGS_GTP_MAX_ULI_LEN]; char uli_buf[OGS_GTP2_MAX_ULI_LEN];
ogs_gtp_f_teid_t mme_s11_teid, pgw_s5c_teid; ogs_gtp2_f_teid_t mme_s11_teid, pgw_s5c_teid;
int len; int len;
ogs_gtp_ambr_t ambr; ogs_gtp2_ambr_t ambr;
ogs_gtp_bearer_qos_t bearer_qos; ogs_gtp2_bearer_qos_t bearer_qos;
char bearer_qos_buf[GTP_BEARER_QOS_LEN]; char bearer_qos_buf[GTP2_BEARER_QOS_LEN];
ogs_gtp_ue_timezone_t ue_timezone; ogs_gtp2_ue_timezone_t ue_timezone;
struct timeval now; struct timeval now;
struct tm time_exp; struct tm time_exp;
char apn[OGS_MAX_APN_LEN+1]; char apn[OGS_MAX_APN_LEN+1];
ogs_gtp_indication_t indication; ogs_gtp2_indication_t indication;
ogs_assert(sess); ogs_assert(sess);
session = sess->session; session = sess->session;
@ -57,7 +57,7 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
ogs_debug("Create Session Request"); ogs_debug("Create Session Request");
ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]", ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]",
mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid); mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid);
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
ogs_assert(mme_ue->imsi_len); ogs_assert(mme_ue->imsi_len);
req->imsi.presence = 1; req->imsi.presence = 1;
@ -76,7 +76,7 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
req->msisdn.len = mme_ue->msisdn_len; req->msisdn.len = mme_ue->msisdn_len;
} }
memset(&uli, 0, sizeof(ogs_gtp_uli_t)); memset(&uli, 0, sizeof(ogs_gtp2_uli_t));
uli.flags.e_cgi = 1; uli.flags.e_cgi = 1;
uli.flags.tai = 1; uli.flags.tai = 1;
ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &mme_ue->tai.plmn_id); ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &mme_ue->tai.plmn_id);
@ -84,20 +84,20 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &mme_ue->e_cgi.plmn_id); ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &mme_ue->e_cgi.plmn_id);
uli.e_cgi.cell_id = mme_ue->e_cgi.cell_id; uli.e_cgi.cell_id = mme_ue->e_cgi.cell_id;
req->user_location_information.presence = 1; req->user_location_information.presence = 1;
ogs_gtp_build_uli(&req->user_location_information, &uli, ogs_gtp2_build_uli(&req->user_location_information, &uli,
uli_buf, OGS_GTP_MAX_ULI_LEN); uli_buf, OGS_GTP2_MAX_ULI_LEN);
req->serving_network.presence = 1; req->serving_network.presence = 1;
req->serving_network.data = &uli.tai.nas_plmn_id; req->serving_network.data = &uli.tai.nas_plmn_id;
req->serving_network.len = sizeof(uli.tai.nas_plmn_id); req->serving_network.len = sizeof(uli.tai.nas_plmn_id);
req->rat_type.presence = 1; req->rat_type.presence = 1;
req->rat_type.u8 = OGS_GTP_RAT_TYPE_EUTRAN; req->rat_type.u8 = OGS_GTP2_RAT_TYPE_EUTRAN;
memset(&mme_s11_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&mme_s11_teid, 0, sizeof(ogs_gtp2_f_teid_t));
mme_s11_teid.interface_type = OGS_GTP_F_TEID_S11_MME_GTP_C; mme_s11_teid.interface_type = OGS_GTP2_F_TEID_S11_MME_GTP_C;
mme_s11_teid.teid = htobe32(mme_ue->mme_s11_teid); mme_s11_teid.teid = htobe32(mme_ue->mme_s11_teid);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
ogs_gtp_self()->gtpc_addr, ogs_gtp_self()->gtpc_addr6, ogs_gtp_self()->gtpc_addr, ogs_gtp_self()->gtpc_addr6,
&mme_s11_teid, &len); &mme_s11_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
@ -105,8 +105,8 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
req->sender_f_teid_for_control_plane.data = &mme_s11_teid; req->sender_f_teid_for_control_plane.data = &mme_s11_teid;
req->sender_f_teid_for_control_plane.len = len; req->sender_f_teid_for_control_plane.len = len;
memset(&pgw_s5c_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&pgw_s5c_teid, 0, sizeof(ogs_gtp2_f_teid_t));
pgw_s5c_teid.interface_type = OGS_GTP_F_TEID_S5_S8_PGW_GTP_C; pgw_s5c_teid.interface_type = OGS_GTP2_F_TEID_S5_S8_PGW_GTP_C;
if (session->smf_ip.ipv4 || session->smf_ip.ipv6) { if (session->smf_ip.ipv4 || session->smf_ip.ipv6) {
pgw_s5c_teid.ipv4 = session->smf_ip.ipv4; pgw_s5c_teid.ipv4 = session->smf_ip.ipv4;
pgw_s5c_teid.ipv6 = session->smf_ip.ipv6; pgw_s5c_teid.ipv6 = session->smf_ip.ipv6;
@ -115,16 +115,16 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
memcpy(pgw_s5c_teid.both.addr6, session->smf_ip.addr6, memcpy(pgw_s5c_teid.both.addr6, session->smf_ip.addr6,
sizeof session->smf_ip.addr6); sizeof session->smf_ip.addr6);
req->pgw_s5_s8_address_for_control_plane_or_pmip.len = req->pgw_s5_s8_address_for_control_plane_or_pmip.len =
OGS_GTP_F_TEID_IPV4V6_LEN; OGS_GTP2_F_TEID_IPV4V6_LEN;
} else if (pgw_s5c_teid.ipv4) { } else if (pgw_s5c_teid.ipv4) {
pgw_s5c_teid.addr = session->smf_ip.addr; pgw_s5c_teid.addr = session->smf_ip.addr;
req->pgw_s5_s8_address_for_control_plane_or_pmip.len = req->pgw_s5_s8_address_for_control_plane_or_pmip.len =
OGS_GTP_F_TEID_IPV4_LEN; OGS_GTP2_F_TEID_IPV4_LEN;
} else if (pgw_s5c_teid.ipv6) { } else if (pgw_s5c_teid.ipv6) {
memcpy(pgw_s5c_teid.addr6, session->smf_ip.addr6, memcpy(pgw_s5c_teid.addr6, session->smf_ip.addr6,
sizeof session->smf_ip.addr6); sizeof session->smf_ip.addr6);
req->pgw_s5_s8_address_for_control_plane_or_pmip.len = req->pgw_s5_s8_address_for_control_plane_or_pmip.len =
OGS_GTP_F_TEID_IPV6_LEN; OGS_GTP2_F_TEID_IPV6_LEN;
} }
req->pgw_s5_s8_address_for_control_plane_or_pmip.presence = 1; req->pgw_s5_s8_address_for_control_plane_or_pmip.presence = 1;
req->pgw_s5_s8_address_for_control_plane_or_pmip.data = req->pgw_s5_s8_address_for_control_plane_or_pmip.data =
@ -142,7 +142,7 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
pgw_addr6 = mme_self()->pgw_addr6; pgw_addr6 = mme_self()->pgw_addr6;
} }
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
pgw_addr, pgw_addr6, &pgw_s5c_teid, &len); pgw_addr, pgw_addr6, &pgw_s5c_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
req->pgw_s5_s8_address_for_control_plane_or_pmip.presence = 1; req->pgw_s5_s8_address_for_control_plane_or_pmip.presence = 1;
@ -157,7 +157,7 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
req->selection_mode.presence = 1; req->selection_mode.presence = 1;
req->selection_mode.u8 = req->selection_mode.u8 =
OGS_GTP_SELECTION_MODE_MS_OR_NETWORK_PROVIDED_APN; OGS_GTP2_SELECTION_MODE_MS_OR_NETWORK_PROVIDED_APN;
ogs_assert(sess->request_type.type == OGS_NAS_EPS_PDN_TYPE_IPV4 || ogs_assert(sess->request_type.type == OGS_NAS_EPS_PDN_TYPE_IPV4 ||
sess->request_type.type == OGS_NAS_EPS_PDN_TYPE_IPV6 || sess->request_type.type == OGS_NAS_EPS_PDN_TYPE_IPV6 ||
@ -193,10 +193,10 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
memcpy(session->paa.addr6, &addr, OGS_IPV6_LEN); memcpy(session->paa.addr6, &addr, OGS_IPV6_LEN);
} }
memset(&indication, 0, sizeof(ogs_gtp_indication_t)); memset(&indication, 0, sizeof(ogs_gtp2_indication_t));
req->indication_flags.presence = 1; req->indication_flags.presence = 1;
req->indication_flags.data = &indication; req->indication_flags.data = &indication;
req->indication_flags.len = sizeof(ogs_gtp_indication_t); req->indication_flags.len = sizeof(ogs_gtp2_indication_t);
indication.change_reporting_support_indication = 1; indication.change_reporting_support_indication = 1;
indication.enb_change_reporting_support_indication = 1; indication.enb_change_reporting_support_indication = 1;
@ -223,7 +223,7 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
req->pdn_address_allocation.presence = 1; req->pdn_address_allocation.presence = 1;
req->maximum_apn_restriction.presence = 1; req->maximum_apn_restriction.presence = 1;
req->maximum_apn_restriction.u8 = OGS_GTP_APN_NO_RESTRICTION; req->maximum_apn_restriction.u8 = OGS_GTP2_APN_NO_RESTRICTION;
if (session->ambr.uplink || session->ambr.downlink) { if (session->ambr.uplink || session->ambr.downlink) {
/* /*
@ -233,7 +233,7 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
* but it shall be encoded as shown in Figure 8.7-1 as * but it shall be encoded as shown in Figure 8.7-1 as
* Unsigned32 binary integer values in kbps (1000 bits per second). * Unsigned32 binary integer values in kbps (1000 bits per second).
*/ */
memset(&ambr, 0, sizeof(ogs_gtp_ambr_t)); memset(&ambr, 0, sizeof(ogs_gtp2_ambr_t));
ambr.uplink = htobe32(session->ambr.uplink / 1000); ambr.uplink = htobe32(session->ambr.uplink / 1000);
ambr.downlink = htobe32(session->ambr.downlink / 1000); ambr.downlink = htobe32(session->ambr.downlink / 1000);
req->aggregate_maximum_bit_rate.presence = 1; req->aggregate_maximum_bit_rate.presence = 1;
@ -258,23 +258,23 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
bearer_qos.pre_emption_vulnerability = bearer_qos.pre_emption_vulnerability =
session->qos.arp.pre_emption_vulnerability; session->qos.arp.pre_emption_vulnerability;
req->bearer_contexts_to_be_created.bearer_level_qos.presence = 1; req->bearer_contexts_to_be_created.bearer_level_qos.presence = 1;
ogs_gtp_build_bearer_qos( ogs_gtp2_build_bearer_qos(
&req->bearer_contexts_to_be_created.bearer_level_qos, &req->bearer_contexts_to_be_created.bearer_level_qos,
&bearer_qos, bearer_qos_buf, GTP_BEARER_QOS_LEN); &bearer_qos, bearer_qos_buf, GTP2_BEARER_QOS_LEN);
/* UE Time Zone */ /* UE Time Zone */
memset(&ue_timezone, 0, sizeof(ue_timezone)); memset(&ue_timezone, 0, sizeof(ue_timezone));
ogs_gettimeofday(&now); ogs_gettimeofday(&now);
ogs_localtime(now.tv_sec, &time_exp); ogs_localtime(now.tv_sec, &time_exp);
if (time_exp.tm_gmtoff >= 0) { if (time_exp.tm_gmtoff >= 0) {
ue_timezone.timezone = OGS_GTP_TIME_TO_BCD(time_exp.tm_gmtoff / 900); ue_timezone.timezone = OGS_GTP2_TIME_TO_BCD(time_exp.tm_gmtoff / 900);
} else { } else {
ue_timezone.timezone = OGS_GTP_TIME_TO_BCD((-time_exp.tm_gmtoff) / 900); ue_timezone.timezone = OGS_GTP2_TIME_TO_BCD((-time_exp.tm_gmtoff) / 900);
ue_timezone.timezone |= 0x08; ue_timezone.timezone |= 0x08;
} }
/* quarters of an hour */ /* quarters of an hour */
ue_timezone.daylight_saving_time = ue_timezone.daylight_saving_time =
OGS_GTP_UE_TIME_ZONE_NO_ADJUSTMENT_FOR_DAYLIGHT_SAVING_TIME; OGS_GTP2_UE_TIME_ZONE_NO_ADJUSTMENT_FOR_DAYLIGHT_SAVING_TIME;
req->ue_time_zone.presence = 1; req->ue_time_zone.presence = 1;
req->ue_time_zone.data = &ue_timezone; req->ue_time_zone.data = &ue_timezone;
req->ue_time_zone.len = sizeof(ue_timezone); req->ue_time_zone.len = sizeof(ue_timezone);
@ -284,22 +284,22 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
req->charging_characteristics.len = 2; req->charging_characteristics.len = 2;
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *mme_s11_build_modify_bearer_request( ogs_pkbuf_t *mme_s11_build_modify_bearer_request(
uint8_t type, mme_bearer_t *bearer, int uli_presence) uint8_t type, mme_bearer_t *bearer, int uli_presence)
{ {
int rv; int rv;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_modify_bearer_request_t *req = &gtp_message.modify_bearer_request; ogs_gtp2_modify_bearer_request_t *req = &gtp_message.modify_bearer_request;
ogs_gtp_f_teid_t enb_s1u_teid; ogs_gtp2_f_teid_t enb_s1u_teid;
int len; int len;
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
char uli_buf[OGS_GTP_MAX_ULI_LEN]; char uli_buf[OGS_GTP2_MAX_ULI_LEN];
ogs_gtp_indication_t indication; ogs_gtp2_indication_t indication;
mme_ue_t *mme_ue = NULL; mme_ue_t *mme_ue = NULL;
mme_sess_t *sess = NULL; mme_sess_t *sess = NULL;
@ -316,14 +316,14 @@ ogs_pkbuf_t *mme_s11_build_modify_bearer_request(
ogs_debug(" ENB_S1U_TEID[%d] SGW_S1U_TEID[%d]", ogs_debug(" ENB_S1U_TEID[%d] SGW_S1U_TEID[%d]",
bearer->enb_s1u_teid, bearer->sgw_s1u_teid); bearer->enb_s1u_teid, bearer->sgw_s1u_teid);
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
if (sess->request_type.value == OGS_NAS_EPS_REQUEST_TYPE_HANDOVER) { if (sess->request_type.value == OGS_NAS_EPS_REQUEST_TYPE_HANDOVER) {
memset(&indication, 0, sizeof(ogs_gtp_indication_t)); memset(&indication, 0, sizeof(ogs_gtp2_indication_t));
indication.handover_indication = 1; indication.handover_indication = 1;
req->indication_flags.presence = 1; req->indication_flags.presence = 1;
req->indication_flags.data = &indication; req->indication_flags.data = &indication;
req->indication_flags.len = sizeof(ogs_gtp_indication_t); req->indication_flags.len = sizeof(ogs_gtp2_indication_t);
} }
/* Bearer Context : EBI */ /* Bearer Context : EBI */
@ -332,10 +332,10 @@ ogs_pkbuf_t *mme_s11_build_modify_bearer_request(
req->bearer_contexts_to_be_modified.eps_bearer_id.u8 = bearer->ebi; req->bearer_contexts_to_be_modified.eps_bearer_id.u8 = bearer->ebi;
/* Data Plane(DL) : ENB-S1U */ /* Data Plane(DL) : ENB-S1U */
memset(&enb_s1u_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&enb_s1u_teid, 0, sizeof(ogs_gtp2_f_teid_t));
enb_s1u_teid.interface_type = OGS_GTP_F_TEID_S1_U_ENODEB_GTP_U; enb_s1u_teid.interface_type = OGS_GTP2_F_TEID_S1_U_ENODEB_GTP_U;
enb_s1u_teid.teid = htobe32(bearer->enb_s1u_teid); enb_s1u_teid.teid = htobe32(bearer->enb_s1u_teid);
rv = ogs_gtp_ip_to_f_teid(&bearer->enb_s1u_ip, &enb_s1u_teid, &len); rv = ogs_gtp2_ip_to_f_teid(&bearer->enb_s1u_ip, &enb_s1u_teid, &len);
ogs_expect_or_return_val(rv == OGS_OK, NULL); ogs_expect_or_return_val(rv == OGS_OK, NULL);
req->bearer_contexts_to_be_modified.s1_u_enodeb_f_teid.presence = 1; req->bearer_contexts_to_be_modified.s1_u_enodeb_f_teid.presence = 1;
req->bearer_contexts_to_be_modified.s1_u_enodeb_f_teid.data = &enb_s1u_teid; req->bearer_contexts_to_be_modified.s1_u_enodeb_f_teid.data = &enb_s1u_teid;
@ -343,7 +343,7 @@ ogs_pkbuf_t *mme_s11_build_modify_bearer_request(
if (uli_presence) { if (uli_presence) {
/* User Location Information(ULI) */ /* User Location Information(ULI) */
memset(&uli, 0, sizeof(ogs_gtp_uli_t)); memset(&uli, 0, sizeof(ogs_gtp2_uli_t));
uli.flags.e_cgi = 1; uli.flags.e_cgi = 1;
uli.flags.tai = 1; uli.flags.tai = 1;
ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &mme_ue->tai.plmn_id); ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &mme_ue->tai.plmn_id);
@ -351,8 +351,8 @@ ogs_pkbuf_t *mme_s11_build_modify_bearer_request(
ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &mme_ue->e_cgi.plmn_id); ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &mme_ue->e_cgi.plmn_id);
uli.e_cgi.cell_id = mme_ue->e_cgi.cell_id; uli.e_cgi.cell_id = mme_ue->e_cgi.cell_id;
req->user_location_information.presence = 1; req->user_location_information.presence = 1;
ogs_gtp_build_uli(&req->user_location_information, &uli, ogs_gtp2_build_uli(&req->user_location_information, &uli,
uli_buf, OGS_GTP_MAX_ULI_LEN); uli_buf, OGS_GTP2_MAX_ULI_LEN);
} }
/* /*
@ -375,18 +375,18 @@ ogs_pkbuf_t *mme_s11_build_modify_bearer_request(
} }
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *mme_s11_build_delete_session_request( ogs_pkbuf_t *mme_s11_build_delete_session_request(
uint8_t type, mme_sess_t *sess) uint8_t type, mme_sess_t *sess)
{ {
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_delete_session_request_t *req = &gtp_message.delete_session_request; ogs_gtp2_delete_session_request_t *req = &gtp_message.delete_session_request;
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
char uli_buf[OGS_GTP_MAX_ULI_LEN]; char uli_buf[OGS_GTP2_MAX_ULI_LEN];
ogs_gtp_indication_t indication; ogs_gtp2_indication_t indication;
mme_bearer_t *bearer = NULL; mme_bearer_t *bearer = NULL;
mme_ue_t *mme_ue = NULL; mme_ue_t *mme_ue = NULL;
@ -401,13 +401,13 @@ ogs_pkbuf_t *mme_s11_build_delete_session_request(
ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]", ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]",
mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid); mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid);
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
req->linked_eps_bearer_id.presence = 1; req->linked_eps_bearer_id.presence = 1;
req->linked_eps_bearer_id.u8 = bearer->ebi; req->linked_eps_bearer_id.u8 = bearer->ebi;
/* User Location Information(ULI) */ /* User Location Information(ULI) */
memset(&uli, 0, sizeof(ogs_gtp_uli_t)); memset(&uli, 0, sizeof(ogs_gtp2_uli_t));
uli.flags.e_cgi = 1; uli.flags.e_cgi = 1;
uli.flags.tai = 1; uli.flags.tai = 1;
ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &mme_ue->tai.plmn_id); ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &mme_ue->tai.plmn_id);
@ -415,32 +415,32 @@ ogs_pkbuf_t *mme_s11_build_delete_session_request(
ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &mme_ue->e_cgi.plmn_id); ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &mme_ue->e_cgi.plmn_id);
uli.e_cgi.cell_id = mme_ue->e_cgi.cell_id; uli.e_cgi.cell_id = mme_ue->e_cgi.cell_id;
req->user_location_information.presence = 1; req->user_location_information.presence = 1;
ogs_gtp_build_uli(&req->user_location_information, &uli, ogs_gtp2_build_uli(&req->user_location_information, &uli,
uli_buf, OGS_GTP_MAX_ULI_LEN); uli_buf, OGS_GTP2_MAX_ULI_LEN);
memset(&indication, 0, sizeof(ogs_gtp_indication_t)); memset(&indication, 0, sizeof(ogs_gtp2_indication_t));
indication.operation_indication = 1; indication.operation_indication = 1;
req->indication_flags.presence = 1; req->indication_flags.presence = 1;
req->indication_flags.data = &indication; req->indication_flags.data = &indication;
req->indication_flags.len = sizeof(ogs_gtp_indication_t); req->indication_flags.len = sizeof(ogs_gtp2_indication_t);
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *mme_s11_build_create_bearer_response( ogs_pkbuf_t *mme_s11_build_create_bearer_response(
uint8_t type, mme_bearer_t *bearer, uint8_t cause_value) uint8_t type, mme_bearer_t *bearer, uint8_t cause_value)
{ {
int rv; int rv;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_create_bearer_response_t *rsp = &gtp_message.create_bearer_response; ogs_gtp2_create_bearer_response_t *rsp = &gtp_message.create_bearer_response;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_gtp_f_teid_t enb_s1u_teid, sgw_s1u_teid; ogs_gtp2_f_teid_t enb_s1u_teid, sgw_s1u_teid;
int len; int len;
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
char uli_buf[OGS_GTP_MAX_ULI_LEN]; char uli_buf[OGS_GTP2_MAX_ULI_LEN];
ogs_gtp_ue_timezone_t ue_timezone; ogs_gtp2_ue_timezone_t ue_timezone;
struct timeval now; struct timeval now;
struct tm time_exp; struct tm time_exp;
@ -454,7 +454,7 @@ ogs_pkbuf_t *mme_s11_build_create_bearer_response(
ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]", ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]",
mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid); mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid);
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
/* Set Cause */ /* Set Cause */
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
@ -463,31 +463,31 @@ ogs_pkbuf_t *mme_s11_build_create_bearer_response(
rsp->cause.len = sizeof(cause); rsp->cause.len = sizeof(cause);
rsp->cause.data = &cause; rsp->cause.data = &cause;
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
/* Bearer Context : EBI */ /* Bearer Context : EBI */
rsp->bearer_contexts.presence = 1; rsp->bearer_contexts.presence = 1;
rsp->bearer_contexts.eps_bearer_id.presence = 1; rsp->bearer_contexts.eps_bearer_id.presence = 1;
rsp->bearer_contexts.eps_bearer_id.u8 = bearer->ebi; rsp->bearer_contexts.eps_bearer_id.u8 = bearer->ebi;
/* Data Plane(DL) : ENB-S1U */ /* Data Plane(DL) : ENB-S1U */
memset(&enb_s1u_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&enb_s1u_teid, 0, sizeof(ogs_gtp2_f_teid_t));
enb_s1u_teid.interface_type = OGS_GTP_F_TEID_S1_U_ENODEB_GTP_U; enb_s1u_teid.interface_type = OGS_GTP2_F_TEID_S1_U_ENODEB_GTP_U;
enb_s1u_teid.teid = htobe32(bearer->enb_s1u_teid); enb_s1u_teid.teid = htobe32(bearer->enb_s1u_teid);
rv = ogs_gtp_ip_to_f_teid(&bearer->enb_s1u_ip, &enb_s1u_teid, &len); rv = ogs_gtp2_ip_to_f_teid(&bearer->enb_s1u_ip, &enb_s1u_teid, &len);
ogs_expect_or_return_val(rv == OGS_OK, NULL); ogs_expect_or_return_val(rv == OGS_OK, NULL);
rsp->bearer_contexts.s1_u_enodeb_f_teid.presence = 1; rsp->bearer_contexts.s1_u_enodeb_f_teid.presence = 1;
rsp->bearer_contexts.s1_u_enodeb_f_teid.data = &enb_s1u_teid; rsp->bearer_contexts.s1_u_enodeb_f_teid.data = &enb_s1u_teid;
rsp->bearer_contexts.s1_u_enodeb_f_teid.len = len; rsp->bearer_contexts.s1_u_enodeb_f_teid.len = len;
/* Data Plane(UL) : SGW-S1U */ /* Data Plane(UL) : SGW-S1U */
memset(&sgw_s1u_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&sgw_s1u_teid, 0, sizeof(ogs_gtp2_f_teid_t));
sgw_s1u_teid.interface_type = OGS_GTP_F_TEID_S1_U_SGW_GTP_U; sgw_s1u_teid.interface_type = OGS_GTP2_F_TEID_S1_U_SGW_GTP_U;
sgw_s1u_teid.teid = htobe32(bearer->sgw_s1u_teid); sgw_s1u_teid.teid = htobe32(bearer->sgw_s1u_teid);
rv = ogs_gtp_ip_to_f_teid(&bearer->sgw_s1u_ip, &sgw_s1u_teid, &len); rv = ogs_gtp2_ip_to_f_teid(&bearer->sgw_s1u_ip, &sgw_s1u_teid, &len);
ogs_expect_or_return_val(rv == OGS_OK, NULL); ogs_expect_or_return_val(rv == OGS_OK, NULL);
rsp->bearer_contexts.s4_u_sgsn_f_teid.presence = 1; rsp->bearer_contexts.s4_u_sgsn_f_teid.presence = 1;
rsp->bearer_contexts.s4_u_sgsn_f_teid.data = &sgw_s1u_teid; rsp->bearer_contexts.s4_u_sgsn_f_teid.data = &sgw_s1u_teid;
rsp->bearer_contexts.s4_u_sgsn_f_teid.len = OGS_GTP_F_TEID_IPV4_LEN; rsp->bearer_contexts.s4_u_sgsn_f_teid.len = OGS_GTP2_F_TEID_IPV4_LEN;
/* Bearer Context : Cause */ /* Bearer Context : Cause */
rsp->bearer_contexts.cause.presence = 1; rsp->bearer_contexts.cause.presence = 1;
@ -496,7 +496,7 @@ ogs_pkbuf_t *mme_s11_build_create_bearer_response(
} }
/* User Location Information(ULI) */ /* User Location Information(ULI) */
memset(&uli, 0, sizeof(ogs_gtp_uli_t)); memset(&uli, 0, sizeof(ogs_gtp2_uli_t));
uli.flags.e_cgi = 1; uli.flags.e_cgi = 1;
uli.flags.tai = 1; uli.flags.tai = 1;
ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &mme_ue->tai.plmn_id); ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &mme_ue->tai.plmn_id);
@ -504,39 +504,39 @@ ogs_pkbuf_t *mme_s11_build_create_bearer_response(
ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &mme_ue->e_cgi.plmn_id); ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &mme_ue->e_cgi.plmn_id);
uli.e_cgi.cell_id = mme_ue->e_cgi.cell_id; uli.e_cgi.cell_id = mme_ue->e_cgi.cell_id;
rsp->user_location_information.presence = 1; rsp->user_location_information.presence = 1;
ogs_gtp_build_uli(&rsp->user_location_information, &uli, ogs_gtp2_build_uli(&rsp->user_location_information, &uli,
uli_buf, OGS_GTP_MAX_ULI_LEN); uli_buf, OGS_GTP2_MAX_ULI_LEN);
/* UE Time Zone */ /* UE Time Zone */
memset(&ue_timezone, 0, sizeof(ue_timezone)); memset(&ue_timezone, 0, sizeof(ue_timezone));
ogs_gettimeofday(&now); ogs_gettimeofday(&now);
ogs_localtime(now.tv_sec, &time_exp); ogs_localtime(now.tv_sec, &time_exp);
if (time_exp.tm_gmtoff >= 0) { if (time_exp.tm_gmtoff >= 0) {
ue_timezone.timezone = OGS_GTP_TIME_TO_BCD(time_exp.tm_gmtoff / 900); ue_timezone.timezone = OGS_GTP2_TIME_TO_BCD(time_exp.tm_gmtoff / 900);
} else { } else {
ue_timezone.timezone = OGS_GTP_TIME_TO_BCD((-time_exp.tm_gmtoff) / 900); ue_timezone.timezone = OGS_GTP2_TIME_TO_BCD((-time_exp.tm_gmtoff) / 900);
ue_timezone.timezone |= 0x08; ue_timezone.timezone |= 0x08;
} }
ue_timezone.daylight_saving_time = ue_timezone.daylight_saving_time =
OGS_GTP_UE_TIME_ZONE_NO_ADJUSTMENT_FOR_DAYLIGHT_SAVING_TIME; OGS_GTP2_UE_TIME_ZONE_NO_ADJUSTMENT_FOR_DAYLIGHT_SAVING_TIME;
rsp->ue_time_zone.presence = 1; rsp->ue_time_zone.presence = 1;
rsp->ue_time_zone.data = &ue_timezone; rsp->ue_time_zone.data = &ue_timezone;
rsp->ue_time_zone.len = sizeof(ue_timezone); rsp->ue_time_zone.len = sizeof(ue_timezone);
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *mme_s11_build_update_bearer_response( ogs_pkbuf_t *mme_s11_build_update_bearer_response(
uint8_t type, mme_bearer_t *bearer, uint8_t cause_value) uint8_t type, mme_bearer_t *bearer, uint8_t cause_value)
{ {
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_update_bearer_response_t *rsp = &gtp_message.update_bearer_response; ogs_gtp2_update_bearer_response_t *rsp = &gtp_message.update_bearer_response;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
char uli_buf[OGS_GTP_MAX_ULI_LEN]; char uli_buf[OGS_GTP2_MAX_ULI_LEN];
ogs_gtp_ue_timezone_t ue_timezone; ogs_gtp2_ue_timezone_t ue_timezone;
struct timeval now; struct timeval now;
struct tm time_exp; struct tm time_exp;
@ -550,7 +550,7 @@ ogs_pkbuf_t *mme_s11_build_update_bearer_response(
ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]", ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]",
mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid); mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid);
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
/* Set Cause */ /* Set Cause */
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
@ -559,7 +559,7 @@ ogs_pkbuf_t *mme_s11_build_update_bearer_response(
rsp->cause.len = sizeof(cause); rsp->cause.len = sizeof(cause);
rsp->cause.data = &cause; rsp->cause.data = &cause;
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
/* Bearer Context : EBI */ /* Bearer Context : EBI */
rsp->bearer_contexts.presence = 1; rsp->bearer_contexts.presence = 1;
rsp->bearer_contexts.eps_bearer_id.presence = 1; rsp->bearer_contexts.eps_bearer_id.presence = 1;
@ -572,7 +572,7 @@ ogs_pkbuf_t *mme_s11_build_update_bearer_response(
} }
/* User Location Information(ULI) */ /* User Location Information(ULI) */
memset(&uli, 0, sizeof(ogs_gtp_uli_t)); memset(&uli, 0, sizeof(ogs_gtp2_uli_t));
uli.flags.e_cgi = 1; uli.flags.e_cgi = 1;
uli.flags.tai = 1; uli.flags.tai = 1;
ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &mme_ue->tai.plmn_id); ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &mme_ue->tai.plmn_id);
@ -580,39 +580,39 @@ ogs_pkbuf_t *mme_s11_build_update_bearer_response(
ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &mme_ue->e_cgi.plmn_id); ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &mme_ue->e_cgi.plmn_id);
uli.e_cgi.cell_id = mme_ue->e_cgi.cell_id; uli.e_cgi.cell_id = mme_ue->e_cgi.cell_id;
rsp->user_location_information.presence = 1; rsp->user_location_information.presence = 1;
ogs_gtp_build_uli(&rsp->user_location_information, &uli, ogs_gtp2_build_uli(&rsp->user_location_information, &uli,
uli_buf, OGS_GTP_MAX_ULI_LEN); uli_buf, OGS_GTP2_MAX_ULI_LEN);
/* UE Time Zone */ /* UE Time Zone */
memset(&ue_timezone, 0, sizeof(ue_timezone)); memset(&ue_timezone, 0, sizeof(ue_timezone));
ogs_gettimeofday(&now); ogs_gettimeofday(&now);
ogs_localtime(now.tv_sec, &time_exp); ogs_localtime(now.tv_sec, &time_exp);
if (time_exp.tm_gmtoff >= 0) { if (time_exp.tm_gmtoff >= 0) {
ue_timezone.timezone = OGS_GTP_TIME_TO_BCD(time_exp.tm_gmtoff / 900); ue_timezone.timezone = OGS_GTP2_TIME_TO_BCD(time_exp.tm_gmtoff / 900);
} else { } else {
ue_timezone.timezone = OGS_GTP_TIME_TO_BCD((-time_exp.tm_gmtoff) / 900); ue_timezone.timezone = OGS_GTP2_TIME_TO_BCD((-time_exp.tm_gmtoff) / 900);
ue_timezone.timezone |= 0x08; ue_timezone.timezone |= 0x08;
} }
ue_timezone.daylight_saving_time = ue_timezone.daylight_saving_time =
OGS_GTP_UE_TIME_ZONE_NO_ADJUSTMENT_FOR_DAYLIGHT_SAVING_TIME; OGS_GTP2_UE_TIME_ZONE_NO_ADJUSTMENT_FOR_DAYLIGHT_SAVING_TIME;
rsp->ue_time_zone.presence = 1; rsp->ue_time_zone.presence = 1;
rsp->ue_time_zone.data = &ue_timezone; rsp->ue_time_zone.data = &ue_timezone;
rsp->ue_time_zone.len = sizeof(ue_timezone); rsp->ue_time_zone.len = sizeof(ue_timezone);
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *mme_s11_build_delete_bearer_response( ogs_pkbuf_t *mme_s11_build_delete_bearer_response(
uint8_t type, mme_bearer_t *bearer, uint8_t cause_value) uint8_t type, mme_bearer_t *bearer, uint8_t cause_value)
{ {
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_delete_bearer_response_t *rsp = &gtp_message.delete_bearer_response; ogs_gtp2_delete_bearer_response_t *rsp = &gtp_message.delete_bearer_response;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
char uli_buf[OGS_GTP_MAX_ULI_LEN]; char uli_buf[OGS_GTP2_MAX_ULI_LEN];
ogs_gtp_ue_timezone_t ue_timezone; ogs_gtp2_ue_timezone_t ue_timezone;
struct timeval now; struct timeval now;
struct tm time_exp; struct tm time_exp;
@ -626,7 +626,7 @@ ogs_pkbuf_t *mme_s11_build_delete_bearer_response(
ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]", ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]",
mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid); mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid);
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
/* Set Cause */ /* Set Cause */
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
@ -635,7 +635,7 @@ ogs_pkbuf_t *mme_s11_build_delete_bearer_response(
rsp->cause.len = sizeof(cause); rsp->cause.len = sizeof(cause);
rsp->cause.data = &cause; rsp->cause.data = &cause;
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
mme_bearer_t *linked_bearer = mme_linked_bearer(bearer); mme_bearer_t *linked_bearer = mme_linked_bearer(bearer);
ogs_assert(linked_bearer); ogs_assert(linked_bearer);
@ -680,7 +680,7 @@ ogs_pkbuf_t *mme_s11_build_delete_bearer_response(
} }
/* User Location Information(ULI) */ /* User Location Information(ULI) */
memset(&uli, 0, sizeof(ogs_gtp_uli_t)); memset(&uli, 0, sizeof(ogs_gtp2_uli_t));
uli.flags.e_cgi = 1; uli.flags.e_cgi = 1;
uli.flags.tai = 1; uli.flags.tai = 1;
ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &mme_ue->tai.plmn_id); ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &mme_ue->tai.plmn_id);
@ -688,57 +688,57 @@ ogs_pkbuf_t *mme_s11_build_delete_bearer_response(
ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &mme_ue->e_cgi.plmn_id); ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &mme_ue->e_cgi.plmn_id);
uli.e_cgi.cell_id = mme_ue->e_cgi.cell_id; uli.e_cgi.cell_id = mme_ue->e_cgi.cell_id;
rsp->user_location_information.presence = 1; rsp->user_location_information.presence = 1;
ogs_gtp_build_uli(&rsp->user_location_information, &uli, ogs_gtp2_build_uli(&rsp->user_location_information, &uli,
uli_buf, OGS_GTP_MAX_ULI_LEN); uli_buf, OGS_GTP2_MAX_ULI_LEN);
/* UE Time Zone */ /* UE Time Zone */
memset(&ue_timezone, 0, sizeof(ue_timezone)); memset(&ue_timezone, 0, sizeof(ue_timezone));
ogs_gettimeofday(&now); ogs_gettimeofday(&now);
ogs_localtime(now.tv_sec, &time_exp); ogs_localtime(now.tv_sec, &time_exp);
if (time_exp.tm_gmtoff >= 0) { if (time_exp.tm_gmtoff >= 0) {
ue_timezone.timezone = OGS_GTP_TIME_TO_BCD(time_exp.tm_gmtoff / 900); ue_timezone.timezone = OGS_GTP2_TIME_TO_BCD(time_exp.tm_gmtoff / 900);
} else { } else {
ue_timezone.timezone = OGS_GTP_TIME_TO_BCD((-time_exp.tm_gmtoff) / 900); ue_timezone.timezone = OGS_GTP2_TIME_TO_BCD((-time_exp.tm_gmtoff) / 900);
ue_timezone.timezone |= 0x08; ue_timezone.timezone |= 0x08;
} }
ue_timezone.daylight_saving_time = ue_timezone.daylight_saving_time =
OGS_GTP_UE_TIME_ZONE_NO_ADJUSTMENT_FOR_DAYLIGHT_SAVING_TIME; OGS_GTP2_UE_TIME_ZONE_NO_ADJUSTMENT_FOR_DAYLIGHT_SAVING_TIME;
rsp->ue_time_zone.presence = 1; rsp->ue_time_zone.presence = 1;
rsp->ue_time_zone.data = &ue_timezone; rsp->ue_time_zone.data = &ue_timezone;
rsp->ue_time_zone.len = sizeof(ue_timezone); rsp->ue_time_zone.len = sizeof(ue_timezone);
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *mme_s11_build_release_access_bearers_request(uint8_t type) ogs_pkbuf_t *mme_s11_build_release_access_bearers_request(uint8_t type)
{ {
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_release_access_bearers_request_t *req = ogs_gtp2_release_access_bearers_request_t *req =
&gtp_message.release_access_bearers_request; &gtp_message.release_access_bearers_request;
ogs_debug("Release Access Bearers Request"); ogs_debug("Release Access Bearers Request");
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
req->originating_node.presence = 1; req->originating_node.presence = 1;
req->originating_node.u8 = OGS_GTP_NODE_TYPE_MME; req->originating_node.u8 = OGS_GTP2_NODE_TYPE_MME;
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *mme_s11_build_downlink_data_notification_ack( ogs_pkbuf_t *mme_s11_build_downlink_data_notification_ack(
uint8_t type, uint8_t cause_value) uint8_t type, uint8_t cause_value)
{ {
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_downlink_data_notification_acknowledge_t *ack = ogs_gtp2_downlink_data_notification_acknowledge_t *ack =
&gtp_message.downlink_data_notification_acknowledge; &gtp_message.downlink_data_notification_acknowledge;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_debug("Downlink Data Notification Ackknowledge"); ogs_debug("Downlink Data Notification Ackknowledge");
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = cause_value; cause.value = cause_value;
@ -751,7 +751,7 @@ ogs_pkbuf_t *mme_s11_build_downlink_data_notification_ack(
ack->data_notification_delay.u8 = 0; ack->data_notification_delay.u8 = 0;
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *mme_s11_build_create_indirect_data_forwarding_tunnel_request( ogs_pkbuf_t *mme_s11_build_create_indirect_data_forwarding_tunnel_request(
@ -763,12 +763,12 @@ ogs_pkbuf_t *mme_s11_build_create_indirect_data_forwarding_tunnel_request(
mme_sess_t *sess = NULL; mme_sess_t *sess = NULL;
mme_bearer_t *bearer = NULL; mme_bearer_t *bearer = NULL;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_create_indirect_data_forwarding_tunnel_request_t *req = ogs_gtp2_create_indirect_data_forwarding_tunnel_request_t *req =
&gtp_message.create_indirect_data_forwarding_tunnel_request; &gtp_message.create_indirect_data_forwarding_tunnel_request;
ogs_gtp_f_teid_t dl_teid[OGS_GTP_MAX_INDIRECT_TUNNEL]; ogs_gtp2_f_teid_t dl_teid[OGS_GTP2_MAX_INDIRECT_TUNNEL];
ogs_gtp_f_teid_t ul_teid[OGS_GTP_MAX_INDIRECT_TUNNEL]; ogs_gtp2_f_teid_t ul_teid[OGS_GTP2_MAX_INDIRECT_TUNNEL];
int len; int len;
ogs_assert(mme_ue); ogs_assert(mme_ue);
@ -777,7 +777,7 @@ ogs_pkbuf_t *mme_s11_build_create_indirect_data_forwarding_tunnel_request(
ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]", ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]",
mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid); mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid);
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
i = 0; i = 0;
sess = mme_sess_first(mme_ue); sess = mme_sess_first(mme_ue);
@ -785,11 +785,11 @@ ogs_pkbuf_t *mme_s11_build_create_indirect_data_forwarding_tunnel_request(
bearer = mme_bearer_first(sess); bearer = mme_bearer_first(sess);
while (bearer != NULL) { while (bearer != NULL) {
if (MME_HAVE_ENB_DL_INDIRECT_TUNNEL(bearer)) { if (MME_HAVE_ENB_DL_INDIRECT_TUNNEL(bearer)) {
memset(&dl_teid[i], 0, sizeof(ogs_gtp_f_teid_t)); memset(&dl_teid[i], 0, sizeof(ogs_gtp2_f_teid_t));
dl_teid[i].interface_type = dl_teid[i].interface_type =
OGS_GTP_F_TEID_ENODEB_GTP_U_FOR_DL_DATA_FORWARDING; OGS_GTP2_F_TEID_ENODEB_GTP_U_FOR_DL_DATA_FORWARDING;
dl_teid[i].teid = htobe32(bearer->enb_dl_teid); dl_teid[i].teid = htobe32(bearer->enb_dl_teid);
rv = ogs_gtp_ip_to_f_teid( rv = ogs_gtp2_ip_to_f_teid(
&bearer->enb_dl_ip, &dl_teid[i], &len); &bearer->enb_dl_ip, &dl_teid[i], &len);
ogs_expect_or_return_val(rv == OGS_OK, NULL); ogs_expect_or_return_val(rv == OGS_OK, NULL);
req->bearer_contexts[i].s1_u_enodeb_f_teid.presence = 1; req->bearer_contexts[i].s1_u_enodeb_f_teid.presence = 1;
@ -798,11 +798,11 @@ ogs_pkbuf_t *mme_s11_build_create_indirect_data_forwarding_tunnel_request(
} }
if (MME_HAVE_ENB_UL_INDIRECT_TUNNEL(bearer)) { if (MME_HAVE_ENB_UL_INDIRECT_TUNNEL(bearer)) {
memset(&ul_teid[i], 0, sizeof(ogs_gtp_f_teid_t)); memset(&ul_teid[i], 0, sizeof(ogs_gtp2_f_teid_t));
ul_teid[i].interface_type = ul_teid[i].interface_type =
OGS_GTP_F_TEID_ENODEB_GTP_U_FOR_UL_DATA_FORWARDING; OGS_GTP2_F_TEID_ENODEB_GTP_U_FOR_UL_DATA_FORWARDING;
ul_teid[i].teid = htobe32(bearer->enb_ul_teid); ul_teid[i].teid = htobe32(bearer->enb_ul_teid);
rv = ogs_gtp_ip_to_f_teid( rv = ogs_gtp2_ip_to_f_teid(
&bearer->enb_ul_ip, &ul_teid[i], &len); &bearer->enb_ul_ip, &ul_teid[i], &len);
ogs_expect_or_return_val(rv == OGS_OK, NULL); ogs_expect_or_return_val(rv == OGS_OK, NULL);
req->bearer_contexts[i].s12_rnc_f_teid.presence = 1; req->bearer_contexts[i].s12_rnc_f_teid.presence = 1;
@ -824,14 +824,14 @@ ogs_pkbuf_t *mme_s11_build_create_indirect_data_forwarding_tunnel_request(
} }
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *mme_s11_build_bearer_resource_command( ogs_pkbuf_t *mme_s11_build_bearer_resource_command(
uint8_t type, mme_bearer_t *bearer, ogs_nas_eps_message_t *nas_message) uint8_t type, mme_bearer_t *bearer, ogs_nas_eps_message_t *nas_message)
{ {
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_bearer_resource_command_t *cmd = ogs_gtp2_bearer_resource_command_t *cmd =
&gtp_message.bearer_resource_command; &gtp_message.bearer_resource_command;
ogs_nas_eps_bearer_resource_allocation_request_t *allocation = NULL; ogs_nas_eps_bearer_resource_allocation_request_t *allocation = NULL;
ogs_nas_eps_bearer_resource_modification_request_t *modification = NULL; ogs_nas_eps_bearer_resource_modification_request_t *modification = NULL;
@ -839,8 +839,8 @@ ogs_pkbuf_t *mme_s11_build_bearer_resource_command(
ogs_nas_eps_quality_of_service_t *qos = NULL; ogs_nas_eps_quality_of_service_t *qos = NULL;
ogs_nas_traffic_flow_aggregate_description_t *tad = NULL; ogs_nas_traffic_flow_aggregate_description_t *tad = NULL;
ogs_gtp_flow_qos_t flow_qos; ogs_gtp2_flow_qos_t flow_qos;
char flow_qos_buf[GTP_FLOW_QOS_LEN]; char flow_qos_buf[GTP2_FLOW_QOS_LEN];
mme_ue_t *mme_ue = NULL; mme_ue_t *mme_ue = NULL;
mme_sess_t *sess = NULL; mme_sess_t *sess = NULL;
@ -879,7 +879,7 @@ ogs_pkbuf_t *mme_s11_build_bearer_resource_command(
linked_bearer = mme_linked_bearer(bearer); linked_bearer = mme_linked_bearer(bearer);
ogs_assert(linked_bearer); ogs_assert(linked_bearer);
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
/* Linked Bearer Context : EBI */ /* Linked Bearer Context : EBI */
cmd->linked_eps_bearer_id.presence = 1; cmd->linked_eps_bearer_id.presence = 1;
@ -903,21 +903,21 @@ ogs_pkbuf_t *mme_s11_build_bearer_resource_command(
* 00000000 Reserved * 00000000 Reserved
*/ */
flow_qos.ul_mbr = qos->ul_mbr == 0 ? bearer->qos.mbr.uplink : flow_qos.ul_mbr = qos->ul_mbr == 0 ? bearer->qos.mbr.uplink :
ogs_gtp_qos_to_bps( ogs_gtp2_qos_to_bps(
qos->ul_mbr, qos->ul_mbr_extended, qos->ul_mbr_extended2); qos->ul_mbr, qos->ul_mbr_extended, qos->ul_mbr_extended2);
flow_qos.dl_mbr = qos->dl_mbr == 0 ? bearer->qos.mbr.downlink : flow_qos.dl_mbr = qos->dl_mbr == 0 ? bearer->qos.mbr.downlink :
ogs_gtp_qos_to_bps( ogs_gtp2_qos_to_bps(
qos->dl_mbr, qos->dl_mbr_extended, qos->dl_mbr_extended2); qos->dl_mbr, qos->dl_mbr_extended, qos->dl_mbr_extended2);
flow_qos.ul_gbr = qos->ul_gbr == 0 ? bearer->qos.gbr.uplink : flow_qos.ul_gbr = qos->ul_gbr == 0 ? bearer->qos.gbr.uplink :
ogs_gtp_qos_to_bps( ogs_gtp2_qos_to_bps(
qos->ul_gbr, qos->ul_gbr_extended, qos->ul_gbr_extended2); qos->ul_gbr, qos->ul_gbr_extended, qos->ul_gbr_extended2);
flow_qos.dl_gbr = qos->dl_gbr == 0 ? bearer->qos.gbr.downlink : flow_qos.dl_gbr = qos->dl_gbr == 0 ? bearer->qos.gbr.downlink :
ogs_gtp_qos_to_bps( ogs_gtp2_qos_to_bps(
qos->dl_gbr, qos->dl_gbr_extended, qos->dl_gbr_extended2); qos->dl_gbr, qos->dl_gbr_extended, qos->dl_gbr_extended2);
ogs_gtp_build_flow_qos( ogs_gtp2_build_flow_qos(
&cmd->flow_quality_of_service, &cmd->flow_quality_of_service,
&flow_qos, flow_qos_buf, GTP_FLOW_QOS_LEN); &flow_qos, flow_qos_buf, GTP2_FLOW_QOS_LEN);
cmd->flow_quality_of_service.presence = 1; cmd->flow_quality_of_service.presence = 1;
} }
@ -940,5 +940,5 @@ ogs_pkbuf_t *mme_s11_build_bearer_resource_command(
} }
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }

View File

@ -34,32 +34,32 @@
static uint8_t esm_cause_from_gtp(uint8_t gtp_cause) static uint8_t esm_cause_from_gtp(uint8_t gtp_cause)
{ {
switch (gtp_cause) { switch (gtp_cause) {
case OGS_GTP_CAUSE_CONTEXT_NOT_FOUND: case OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND:
return ESM_CAUSE_INVALID_EPS_BEARER_IDENTITY; return ESM_CAUSE_INVALID_EPS_BEARER_IDENTITY;
case OGS_GTP_CAUSE_SERVICE_NOT_SUPPORTED: case OGS_GTP2_CAUSE_SERVICE_NOT_SUPPORTED:
return ESM_CAUSE_SERVICE_OPTION_NOT_SUPPORTED; return ESM_CAUSE_SERVICE_OPTION_NOT_SUPPORTED;
case OGS_GTP_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION: case OGS_GTP2_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION:
return ESM_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION; return ESM_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION;
case OGS_GTP_CAUSE_SYNTACTIC_ERROR_IN_THE_TFT_OPERATION: case OGS_GTP2_CAUSE_SYNTACTIC_ERROR_IN_THE_TFT_OPERATION:
return ESM_CAUSE_SYNTACTICAL_ERROR_IN_THE_TFT_OPERATION; return ESM_CAUSE_SYNTACTICAL_ERROR_IN_THE_TFT_OPERATION;
case OGS_GTP_CAUSE_SYNTACTIC_ERRORS_IN_PACKET_FILTER: case OGS_GTP2_CAUSE_SYNTACTIC_ERRORS_IN_PACKET_FILTER:
return ESM_CAUSE_SYNTACTICAL_ERROR_IN_PACKET_FILTERS; return ESM_CAUSE_SYNTACTICAL_ERROR_IN_PACKET_FILTERS;
case OGS_GTP_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTER: case OGS_GTP2_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTER:
return ESM_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTERS; return ESM_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTERS;
default: default:
break; break;
} }
/* /*
* OGS_GTP_CAUSE_SYSTEM_FAILURE * OGS_GTP2_CAUSE_SYSTEM_FAILURE
* OGS_GTP_CAUSE_MANDATORY_IE_MISSING * OGS_GTP2_CAUSE_MANDATORY_IE_MISSING
* ... * ...
*/ */
return ESM_CAUSE_NETWORK_FAILURE; return ESM_CAUSE_NETWORK_FAILURE;
} }
void mme_s11_handle_echo_request( void mme_s11_handle_echo_request(
ogs_gtp_xact_t *xact, ogs_gtp_echo_request_t *req) ogs_gtp_xact_t *xact, ogs_gtp2_echo_request_t *req)
{ {
ogs_assert(xact); ogs_assert(xact);
ogs_assert(req); ogs_assert(req);
@ -67,30 +67,30 @@ void mme_s11_handle_echo_request(
ogs_debug("Receiving Echo Request"); ogs_debug("Receiving Echo Request");
/* FIXME : Before implementing recovery counter correctly, /* FIXME : Before implementing recovery counter correctly,
* I'll re-use the recovery value in request message */ * I'll re-use the recovery value in request message */
ogs_gtp_send_echo_response(xact, req->recovery.u8, 0); ogs_gtp2_send_echo_response(xact, req->recovery.u8, 0);
} }
void mme_s11_handle_echo_response( void mme_s11_handle_echo_response(
ogs_gtp_xact_t *xact, ogs_gtp_echo_response_t *rsp) ogs_gtp_xact_t *xact, ogs_gtp2_echo_response_t *rsp)
{ {
/* Not Implemented */ /* Not Implemented */
} }
void mme_s11_handle_create_session_response( void mme_s11_handle_create_session_response(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
ogs_gtp_create_session_response_t *rsp) ogs_gtp2_create_session_response_t *rsp)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
ogs_gtp_f_teid_t *sgw_s11_teid = NULL; ogs_gtp2_f_teid_t *sgw_s11_teid = NULL;
ogs_gtp_f_teid_t *sgw_s1u_teid = NULL; ogs_gtp2_f_teid_t *sgw_s1u_teid = NULL;
mme_bearer_t *bearer = NULL; mme_bearer_t *bearer = NULL;
mme_sess_t *sess = NULL; mme_sess_t *sess = NULL;
mme_ue_t *mme_ue = mme_ue_from_teid; mme_ue_t *mme_ue = mme_ue_from_teid;
ogs_session_t *session = NULL; ogs_session_t *session = NULL;
ogs_gtp_bearer_qos_t bearer_qos; ogs_gtp2_bearer_qos_t bearer_qos;
ogs_gtp_ambr_t *ambr = NULL; ogs_gtp2_ambr_t *ambr = NULL;
uint16_t decoded = 0; uint16_t decoded = 0;
bool esm_piggybacked = false; bool esm_piggybacked = false;
@ -100,28 +100,28 @@ void mme_s11_handle_create_session_response(
ogs_debug("Create Session Response"); ogs_debug("Create Session Response");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (rsp->pdn_address_allocation.presence == 0) { if (rsp->pdn_address_allocation.presence == 0) {
ogs_error("No PDN Address Allocation"); ogs_error("No PDN Address Allocation");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->sender_f_teid_for_control_plane.presence == 0) { if (rsp->sender_f_teid_for_control_plane.presence == 0) {
ogs_error("No S11 TEID"); ogs_error("No S11 TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts_created.s1_u_enodeb_f_teid.presence == 0) { if (rsp->bearer_contexts_created.s1_u_enodeb_f_teid.presence == 0) {
ogs_error("No S1U TEID"); ogs_error("No S1U TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts_created.presence == 0) { if (rsp->bearer_contexts_created.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts_created.eps_bearer_id.presence == 0) { if (rsp->bearer_contexts_created.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (!mme_ue) { if (!mme_ue) {
@ -136,16 +136,16 @@ void mme_s11_handle_create_session_response(
ogs_expect_or_return(rv == OGS_OK); ogs_expect_or_return(rv == OGS_OK);
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED || if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED ||
cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED_PARTIALLY || cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED_PARTIALLY ||
cause_value == cause_value ==
OGS_GTP_CAUSE_NEW_PDN_TYPE_DUE_TO_NETWORK_PREFERENCE || OGS_GTP2_CAUSE_NEW_PDN_TYPE_DUE_TO_NETWORK_PREFERENCE ||
cause_value == cause_value ==
OGS_GTP_CAUSE_NEW_PDN_TYPE_DUE_TO_SINGLE_ADDRESS_BEARER_ONLY) { OGS_GTP2_CAUSE_NEW_PDN_TYPE_DUE_TO_SINGLE_ADDRESS_BEARER_ONLY) {
if (rsp->bearer_contexts_created.cause.presence) { if (rsp->bearer_contexts_created.cause.presence) {
cause = rsp->bearer_contexts_created.cause.data; cause = rsp->bearer_contexts_created.cause.data;
ogs_assert(cause); ogs_assert(cause);
@ -153,14 +153,14 @@ void mme_s11_handle_create_session_response(
cause_value = cause->value; cause_value = cause->value;
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
} else { } else {
ogs_warn("GTP Failed [CAUSE:%d]", cause_value); ogs_warn("GTP Failed [CAUSE:%d]", cause_value);
} }
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->pdn_address_allocation.presence) { if (rsp->pdn_address_allocation.presence) {
@ -171,27 +171,27 @@ void mme_s11_handle_create_session_response(
if (!OGS_PDU_SESSION_TYPE_IS_VALID(paa.session_type)) { if (!OGS_PDU_SESSION_TYPE_IS_VALID(paa.session_type)) {
ogs_error("Unknown PDN Type[%u]", paa.session_type); ogs_error("Unknown PDN Type[%u]", paa.session_type);
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_INCORRECT; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_INCORRECT;
} }
} }
if (mme_ue_from_teid && mme_ue && if (mme_ue_from_teid && mme_ue &&
cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
bearer = mme_bearer_find_by_ue_ebi(mme_ue, bearer = mme_bearer_find_by_ue_ebi(mme_ue,
rsp->bearer_contexts_created.eps_bearer_id.u8); rsp->bearer_contexts_created.eps_bearer_id.u8);
} }
if (!bearer) { if (!bearer) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED && if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED &&
cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED_PARTIALLY && cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED_PARTIALLY &&
cause_value != cause_value !=
OGS_GTP_CAUSE_NEW_PDN_TYPE_DUE_TO_NETWORK_PREFERENCE && OGS_GTP2_CAUSE_NEW_PDN_TYPE_DUE_TO_NETWORK_PREFERENCE &&
cause_value != cause_value !=
OGS_GTP_CAUSE_NEW_PDN_TYPE_DUE_TO_SINGLE_ADDRESS_BEARER_ONLY) { OGS_GTP2_CAUSE_NEW_PDN_TYPE_DUE_TO_SINGLE_ADDRESS_BEARER_ONLY) {
if (mme_ue_from_teid && mme_ue) { if (mme_ue_from_teid && mme_ue) {
if (esm_piggybacked == true) { if (esm_piggybacked == true) {
ogs_error("[%s] Attach reject", mme_ue->imsi_bcd); ogs_error("[%s] Attach reject", mme_ue->imsi_bcd);
@ -225,7 +225,7 @@ void mme_s11_handle_create_session_response(
/* Bearer QoS */ /* Bearer QoS */
if (rsp->bearer_contexts_created.bearer_level_qos.presence) { if (rsp->bearer_contexts_created.bearer_level_qos.presence) {
decoded = ogs_gtp_parse_bearer_qos(&bearer_qos, decoded = ogs_gtp2_parse_bearer_qos(&bearer_qos,
&rsp->bearer_contexts_created.bearer_level_qos); &rsp->bearer_contexts_created.bearer_level_qos);
ogs_assert(rsp->bearer_contexts_created.bearer_level_qos.len == ogs_assert(rsp->bearer_contexts_created.bearer_level_qos.len ==
decoded); decoded);
@ -253,7 +253,7 @@ void mme_s11_handle_create_session_response(
ogs_debug(" ENB_S1U_TEID[%d] SGW_S1U_TEID[%d]", ogs_debug(" ENB_S1U_TEID[%d] SGW_S1U_TEID[%d]",
bearer->enb_s1u_teid, bearer->sgw_s1u_teid); bearer->enb_s1u_teid, bearer->sgw_s1u_teid);
rv = ogs_gtp_f_teid_to_ip(sgw_s1u_teid, &bearer->sgw_s1u_ip); rv = ogs_gtp2_f_teid_to_ip(sgw_s1u_teid, &bearer->sgw_s1u_ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
if (esm_piggybacked == true) { if (esm_piggybacked == true) {
@ -281,7 +281,7 @@ void mme_s11_handle_create_session_response(
void mme_s11_handle_modify_bearer_response( void mme_s11_handle_modify_bearer_response(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
ogs_gtp_modify_bearer_response_t *rsp) ogs_gtp2_modify_bearer_response_t *rsp)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
@ -295,7 +295,7 @@ void mme_s11_handle_modify_bearer_response(
ogs_debug("Modify Bearer Response"); ogs_debug("Modify Bearer Response");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (!mme_ue) { if (!mme_ue) {
ogs_warn("No Context in TEID"); ogs_warn("No Context in TEID");
@ -311,18 +311,18 @@ void mme_s11_handle_modify_bearer_response(
ogs_expect_or_return(rv == OGS_OK); ogs_expect_or_return(rv == OGS_OK);
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED)
ogs_warn("GTP Failed [CAUSE:%d]", cause_value); ogs_warn("GTP Failed [CAUSE:%d]", cause_value);
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
if (mme_ue_from_teid && mme_ue) if (mme_ue_from_teid && mme_ue)
mme_send_delete_session_or_mme_ue_context_release(mme_ue); mme_send_delete_session_or_mme_ue_context_release(mme_ue);
return; return;
@ -344,7 +344,7 @@ void mme_s11_handle_modify_bearer_response(
void mme_s11_handle_delete_session_response( void mme_s11_handle_delete_session_response(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
ogs_gtp_delete_session_response_t *rsp) ogs_gtp2_delete_session_response_t *rsp)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
@ -368,11 +368,11 @@ void mme_s11_handle_delete_session_response(
ogs_expect_or_return(rv == OGS_OK); ogs_expect_or_return(rv == OGS_OK);
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED)
ogs_warn("GTP Failed [CAUSE:%d] - Ignored", cause_value); ogs_warn("GTP Failed [CAUSE:%d] - Ignored", cause_value);
} }
@ -452,61 +452,61 @@ void mme_s11_handle_delete_session_response(
void mme_s11_handle_create_bearer_request( void mme_s11_handle_create_bearer_request(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_create_bearer_request_t *req) ogs_gtp2_create_bearer_request_t *req)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
mme_bearer_t *bearer = NULL, *default_bearer = NULL; mme_bearer_t *bearer = NULL, *default_bearer = NULL;
mme_sess_t *sess = NULL; mme_sess_t *sess = NULL;
ogs_gtp_f_teid_t *sgw_s1u_teid = NULL; ogs_gtp2_f_teid_t *sgw_s1u_teid = NULL;
ogs_gtp_bearer_qos_t bearer_qos; ogs_gtp2_bearer_qos_t bearer_qos;
ogs_assert(xact); ogs_assert(xact);
ogs_assert(req); ogs_assert(req);
ogs_debug("Create Bearer Response"); ogs_debug("Create Bearer Response");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (req->linked_eps_bearer_id.presence == 0) { if (req->linked_eps_bearer_id.presence == 0) {
ogs_error("No Linked EBI"); ogs_error("No Linked EBI");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts.presence == 0) { if (req->bearer_contexts.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts.eps_bearer_id.presence == 0) { if (req->bearer_contexts.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts.s1_u_enodeb_f_teid.presence == 0) { if (req->bearer_contexts.s1_u_enodeb_f_teid.presence == 0) {
ogs_error("No GTP TEID"); ogs_error("No GTP TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts.bearer_level_qos.presence == 0) { if (req->bearer_contexts.bearer_level_qos.presence == 0) {
ogs_error("No QoS"); ogs_error("No QoS");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts.tft.presence == 0) { if (req->bearer_contexts.tft.presence == 0) {
ogs_error("No TFT"); ogs_error("No TFT");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (mme_ue && cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (mme_ue && cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
sess = mme_sess_find_by_ebi(mme_ue, req->linked_eps_bearer_id.u8); sess = mme_sess_find_by_ebi(mme_ue, req->linked_eps_bearer_id.u8);
if (sess) bearer = mme_bearer_add(sess); if (sess) bearer = mme_bearer_add(sess);
} }
if (!bearer) { if (!bearer) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message(xact, mme_ue ? mme_ue->sgw_s11_teid : 0, ogs_gtp2_send_error_message(xact, mme_ue ? mme_ue->sgw_s11_teid : 0,
OGS_GTP_CREATE_BEARER_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -526,11 +526,11 @@ void mme_s11_handle_create_bearer_request(
/* Data Plane(UL) : SGW-S1U */ /* Data Plane(UL) : SGW-S1U */
sgw_s1u_teid = req->bearer_contexts.s1_u_enodeb_f_teid.data; sgw_s1u_teid = req->bearer_contexts.s1_u_enodeb_f_teid.data;
bearer->sgw_s1u_teid = be32toh(sgw_s1u_teid->teid); bearer->sgw_s1u_teid = be32toh(sgw_s1u_teid->teid);
rv = ogs_gtp_f_teid_to_ip(sgw_s1u_teid, &bearer->sgw_s1u_ip); rv = ogs_gtp2_f_teid_to_ip(sgw_s1u_teid, &bearer->sgw_s1u_ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
/* Bearer QoS */ /* Bearer QoS */
ogs_expect_or_return(ogs_gtp_parse_bearer_qos(&bearer_qos, ogs_expect_or_return(ogs_gtp2_parse_bearer_qos(&bearer_qos,
&req->bearer_contexts.bearer_level_qos) == &req->bearer_contexts.bearer_level_qos) ==
req->bearer_contexts.bearer_level_qos.len); req->bearer_contexts.bearer_level_qos.len);
bearer->qos.index = bearer_qos.qci; bearer->qos.index = bearer_qos.qci;
@ -590,42 +590,42 @@ void mme_s11_handle_create_bearer_request(
void mme_s11_handle_update_bearer_request( void mme_s11_handle_update_bearer_request(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_update_bearer_request_t *req) ogs_gtp2_update_bearer_request_t *req)
{ {
uint8_t cause_value = 0; uint8_t cause_value = 0;
mme_bearer_t *bearer = NULL; mme_bearer_t *bearer = NULL;
mme_sess_t *sess = NULL; mme_sess_t *sess = NULL;
ogs_gtp_bearer_qos_t bearer_qos; ogs_gtp2_bearer_qos_t bearer_qos;
ogs_assert(xact); ogs_assert(xact);
ogs_assert(req); ogs_assert(req);
ogs_debug("Update Bearer Request"); ogs_debug("Update Bearer Request");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (req->bearer_contexts.presence == 0) { if (req->bearer_contexts.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts.eps_bearer_id.presence == 0) { if (req->bearer_contexts.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (mme_ue && cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (mme_ue && cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
bearer = mme_bearer_find_by_ue_ebi(mme_ue, bearer = mme_bearer_find_by_ue_ebi(mme_ue,
req->bearer_contexts.eps_bearer_id.u8); req->bearer_contexts.eps_bearer_id.u8);
} }
if (!bearer) { if (!bearer) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message(xact, mme_ue ? mme_ue->sgw_s11_teid : 0, ogs_gtp2_send_error_message(xact, mme_ue ? mme_ue->sgw_s11_teid : 0,
OGS_GTP_UPDATE_BEARER_RESPONSE_TYPE, cause_value); OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -655,7 +655,7 @@ void mme_s11_handle_update_bearer_request(
if (req->bearer_contexts.bearer_level_qos.presence == 1) { if (req->bearer_contexts.bearer_level_qos.presence == 1) {
/* Bearer QoS */ /* Bearer QoS */
ogs_expect_or_return(ogs_gtp_parse_bearer_qos(&bearer_qos, ogs_expect_or_return(ogs_gtp2_parse_bearer_qos(&bearer_qos,
&req->bearer_contexts.bearer_level_qos) == &req->bearer_contexts.bearer_level_qos) ==
req->bearer_contexts.bearer_level_qos.len); req->bearer_contexts.bearer_level_qos.len);
bearer->qos.index = bearer_qos.qci; bearer->qos.index = bearer_qos.qci;
@ -702,13 +702,13 @@ void mme_s11_handle_update_bearer_request(
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
mme_gtp_send_update_bearer_response( mme_gtp_send_update_bearer_response(
bearer, OGS_GTP_CAUSE_REQUEST_ACCEPTED)); bearer, OGS_GTP2_CAUSE_REQUEST_ACCEPTED));
} }
} }
void mme_s11_handle_delete_bearer_request( void mme_s11_handle_delete_bearer_request(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_delete_bearer_request_t *req) ogs_gtp2_delete_bearer_request_t *req)
{ {
mme_bearer_t *bearer = NULL; mme_bearer_t *bearer = NULL;
mme_sess_t *sess = NULL; mme_sess_t *sess = NULL;
@ -757,9 +757,9 @@ void mme_s11_handle_delete_bearer_request(
if (!bearer) { if (!bearer) {
ogs_error("No Context"); ogs_error("No Context");
ogs_gtp_send_error_message(xact, mme_ue ? mme_ue->sgw_s11_teid : 0, ogs_gtp2_send_error_message(xact, mme_ue ? mme_ue->sgw_s11_teid : 0,
OGS_GTP_DELETE_BEARER_RESPONSE_TYPE, OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE,
OGS_GTP_CAUSE_CONTEXT_NOT_FOUND); OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND);
return; return;
} }
@ -799,7 +799,7 @@ void mme_s11_handle_delete_bearer_request(
void mme_s11_handle_release_access_bearers_response( void mme_s11_handle_release_access_bearers_response(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
ogs_gtp_release_access_bearers_response_t *rsp) ogs_gtp2_release_access_bearers_response_t *rsp)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
@ -827,11 +827,11 @@ void mme_s11_handle_release_access_bearers_response(
ogs_expect_or_return(rv == OGS_OK); ogs_expect_or_return(rv == OGS_OK);
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED)
ogs_warn("GTP Failed [CAUSE:%d]", cause_value); ogs_warn("GTP Failed [CAUSE:%d]", cause_value);
} }
@ -939,7 +939,7 @@ void mme_s11_handle_release_access_bearers_response(
void mme_s11_handle_downlink_data_notification( void mme_s11_handle_downlink_data_notification(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_downlink_data_notification_t *noti) ogs_gtp2_downlink_data_notification_t *noti)
{ {
uint8_t cause_value = 0; uint8_t cause_value = 0;
@ -950,19 +950,19 @@ void mme_s11_handle_downlink_data_notification(
ogs_debug("Downlink Data Notification"); ogs_debug("Downlink Data Notification");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (noti->eps_bearer_id.presence == 0) { if (noti->eps_bearer_id.presence == 0) {
ogs_error("No Bearer ID"); ogs_error("No Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (!mme_ue) { if (!mme_ue) {
ogs_error("No UE Context"); ogs_error("No UE Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
bearer = mme_bearer_find_by_ue_ebi(mme_ue, noti->eps_bearer_id.u8); bearer = mme_bearer_find_by_ue_ebi(mme_ue, noti->eps_bearer_id.u8);
if (!bearer) if (!bearer)
ogs_error("No Context for EPS Bearer ID[%d]", ogs_error("No Context for EPS Bearer ID[%d]",
@ -971,13 +971,13 @@ void mme_s11_handle_downlink_data_notification(
if (!bearer) { if (!bearer) {
ogs_error("No Bearer Context"); ogs_error("No Bearer Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message(xact, mme_ue ? mme_ue->sgw_s11_teid : 0, ogs_gtp2_send_error_message(xact, mme_ue ? mme_ue->sgw_s11_teid : 0,
OGS_GTP_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE, OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE,
OGS_GTP_CAUSE_CONTEXT_NOT_FOUND); OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND);
return; return;
} }
@ -997,7 +997,7 @@ void mme_s11_handle_downlink_data_notification(
bearer->notify.xact = xact; bearer->notify.xact = xact;
if (noti->cause.presence) { if (noti->cause.presence) {
ogs_gtp_cause_t *cause = noti->cause.data; ogs_gtp2_cause_t *cause = noti->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
@ -1020,7 +1020,7 @@ void mme_s11_handle_downlink_data_notification(
ogs_assert(OGS_OK == s1ap_send_paging(mme_ue, S1AP_CNDomain_ps)); ogs_assert(OGS_OK == s1ap_send_paging(mme_ue, S1AP_CNDomain_ps));
} else if (ECM_CONNECTED(mme_ue)) { } else if (ECM_CONNECTED(mme_ue)) {
if (cause_value == OGS_GTP_CAUSE_ERROR_INDICATION_RECEIVED) { if (cause_value == OGS_GTP2_CAUSE_ERROR_INDICATION_RECEIVED) {
/* /*
* TS23.007 22. Downlink Data Notification Handling at MME/S4 SGSN * TS23.007 22. Downlink Data Notification Handling at MME/S4 SGSN
@ -1060,14 +1060,14 @@ void mme_s11_handle_downlink_data_notification(
} else { } else {
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
mme_gtp_send_downlink_data_notification_ack( mme_gtp_send_downlink_data_notification_ack(
bearer, OGS_GTP_CAUSE_UE_ALREADY_RE_ATTACHED)); bearer, OGS_GTP2_CAUSE_UE_ALREADY_RE_ATTACHED));
} }
} }
} }
void mme_s11_handle_create_indirect_data_forwarding_tunnel_response( void mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
ogs_gtp_create_indirect_data_forwarding_tunnel_response_t *rsp) ogs_gtp2_create_indirect_data_forwarding_tunnel_response_t *rsp)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
@ -1076,7 +1076,7 @@ void mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
enb_ue_t *source_ue = NULL; enb_ue_t *source_ue = NULL;
int i; int i;
ogs_gtp_f_teid_t *teid = NULL; ogs_gtp2_f_teid_t *teid = NULL;
ogs_assert(xact); ogs_assert(xact);
ogs_assert(rsp); ogs_assert(rsp);
@ -1093,11 +1093,11 @@ void mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
ogs_expect_or_return(rv == OGS_OK); ogs_expect_or_return(rv == OGS_OK);
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED)
ogs_warn("GTP Failed [CAUSE:%d]", cause_value); ogs_warn("GTP Failed [CAUSE:%d]", cause_value);
} }
@ -1105,7 +1105,7 @@ void mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]", ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]",
mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid); mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid);
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
if (mme_ue_from_teid && mme_ue) if (mme_ue_from_teid && mme_ue)
mme_send_delete_session_or_mme_ue_context_release(mme_ue); mme_send_delete_session_or_mme_ue_context_release(mme_ue);
return; return;
@ -1126,7 +1126,7 @@ void mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
ogs_assert(teid); ogs_assert(teid);
bearer->sgw_dl_teid = be32toh(teid->teid); bearer->sgw_dl_teid = be32toh(teid->teid);
rv = ogs_gtp_f_teid_to_ip(teid, &bearer->sgw_dl_ip); rv = ogs_gtp2_f_teid_to_ip(teid, &bearer->sgw_dl_ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
} }
if (rsp->bearer_contexts[i].s2b_u_epdg_f_teid_5.presence) { if (rsp->bearer_contexts[i].s2b_u_epdg_f_teid_5.presence) {
@ -1134,7 +1134,7 @@ void mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
ogs_assert(teid); ogs_assert(teid);
bearer->sgw_ul_teid = be32toh(teid->teid); bearer->sgw_ul_teid = be32toh(teid->teid);
rv = ogs_gtp_f_teid_to_ip(teid, &bearer->sgw_ul_ip); rv = ogs_gtp2_f_teid_to_ip(teid, &bearer->sgw_ul_ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
} }
} }
@ -1148,7 +1148,7 @@ void mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
void mme_s11_handle_delete_indirect_data_forwarding_tunnel_response( void mme_s11_handle_delete_indirect_data_forwarding_tunnel_response(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
ogs_gtp_delete_indirect_data_forwarding_tunnel_response_t *rsp) ogs_gtp2_delete_indirect_data_forwarding_tunnel_response_t *rsp)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
@ -1172,15 +1172,15 @@ void mme_s11_handle_delete_indirect_data_forwarding_tunnel_response(
ogs_expect_or_return(rv == OGS_OK); ogs_expect_or_return(rv == OGS_OK);
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED)
ogs_warn("GTP Failed [CAUSE:%d]", cause_value); ogs_warn("GTP Failed [CAUSE:%d]", cause_value);
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
if (mme_ue_from_teid && mme_ue) if (mme_ue_from_teid && mme_ue)
mme_send_delete_session_or_mme_ue_context_release(mme_ue); mme_send_delete_session_or_mme_ue_context_release(mme_ue);
return; return;
@ -1204,7 +1204,7 @@ void mme_s11_handle_delete_indirect_data_forwarding_tunnel_response(
void mme_s11_handle_bearer_resource_failure_indication( void mme_s11_handle_bearer_resource_failure_indication(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
ogs_gtp_bearer_resource_failure_indication_t *ind) ogs_gtp2_bearer_resource_failure_indication_t *ind)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
@ -1230,7 +1230,7 @@ void mme_s11_handle_bearer_resource_failure_indication(
ogs_expect_or_return(rv == OGS_OK); ogs_expect_or_return(rv == OGS_OK);
if (ind->cause.presence) { if (ind->cause.presence) {
ogs_gtp_cause_t *cause = ind->cause.data; ogs_gtp2_cause_t *cause = ind->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
@ -1247,7 +1247,7 @@ void mme_s11_handle_bearer_resource_failure_indication(
nas_eps_send_bearer_resource_modification_reject( nas_eps_send_bearer_resource_modification_reject(
mme_ue, sess->pti, esm_cause_from_gtp(cause_value))); mme_ue, sess->pti, esm_cause_from_gtp(cause_value)));
if (cause_value == OGS_GTP_CAUSE_CONTEXT_NOT_FOUND) { if (cause_value == OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND) {
ogs_warn("No Bearer"); ogs_warn("No Bearer");
mme_bearer_remove(bearer); mme_bearer_remove(bearer);
} }

View File

@ -27,44 +27,44 @@ extern "C" {
#endif #endif
void mme_s11_handle_echo_request( void mme_s11_handle_echo_request(
ogs_gtp_xact_t *xact, ogs_gtp_echo_request_t *req); ogs_gtp_xact_t *xact, ogs_gtp2_echo_request_t *req);
void mme_s11_handle_echo_response( void mme_s11_handle_echo_response(
ogs_gtp_xact_t *xact, ogs_gtp_echo_response_t *rsp); ogs_gtp_xact_t *xact, ogs_gtp2_echo_response_t *rsp);
void mme_s11_handle_create_session_response( void mme_s11_handle_create_session_response(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_create_session_response_t *rsp); ogs_gtp2_create_session_response_t *rsp);
void mme_s11_handle_modify_bearer_response( void mme_s11_handle_modify_bearer_response(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_modify_bearer_response_t *rsp); ogs_gtp2_modify_bearer_response_t *rsp);
void mme_s11_handle_delete_session_response( void mme_s11_handle_delete_session_response(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_delete_session_response_t *rsp); ogs_gtp2_delete_session_response_t *rsp);
void mme_s11_handle_create_bearer_request( void mme_s11_handle_create_bearer_request(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_create_bearer_request_t *rsp); ogs_gtp2_create_bearer_request_t *rsp);
void mme_s11_handle_update_bearer_request( void mme_s11_handle_update_bearer_request(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_update_bearer_request_t *rsp); ogs_gtp2_update_bearer_request_t *rsp);
void mme_s11_handle_delete_bearer_request( void mme_s11_handle_delete_bearer_request(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_delete_bearer_request_t *rsp); ogs_gtp2_delete_bearer_request_t *rsp);
void mme_s11_handle_release_access_bearers_response( void mme_s11_handle_release_access_bearers_response(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_release_access_bearers_response_t *rsp); ogs_gtp2_release_access_bearers_response_t *rsp);
void mme_s11_handle_downlink_data_notification( void mme_s11_handle_downlink_data_notification(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_downlink_data_notification_t *noti); ogs_gtp2_downlink_data_notification_t *noti);
void mme_s11_handle_create_indirect_data_forwarding_tunnel_response( void mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_create_indirect_data_forwarding_tunnel_response_t *rsp); ogs_gtp2_create_indirect_data_forwarding_tunnel_response_t *rsp);
void mme_s11_handle_delete_indirect_data_forwarding_tunnel_response( void mme_s11_handle_delete_indirect_data_forwarding_tunnel_response(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_delete_indirect_data_forwarding_tunnel_response_t *rsp); ogs_gtp2_delete_indirect_data_forwarding_tunnel_response_t *rsp);
void mme_s11_handle_bearer_resource_failure_indication( void mme_s11_handle_bearer_resource_failure_indication(
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
ogs_gtp_bearer_resource_failure_indication_t *ind); ogs_gtp2_bearer_resource_failure_indication_t *ind);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -123,7 +123,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
ogs_gtp_node_t *gnode = NULL; ogs_gtp_node_t *gnode = NULL;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
mme_vlr_t *vlr = NULL; mme_vlr_t *vlr = NULL;
@ -243,7 +243,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
ogs_warn("Cannot decode S1AP message"); ogs_warn("Cannot decode S1AP message");
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
s1ap_send_error_indication( s1ap_send_error_indication(
enb, NULL, NULL, S1AP_Cause_PR_protocol, enb, NULL, NULL, S1AP_Cause_PR_protocol,
S1AP_CauseProtocol_abstract_syntax_error_falsely_constructed_message)); S1AP_CauseProtocol_abstract_syntax_error_falsely_constructed_message));
} }
@ -299,7 +299,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
} else { } else {
/* Here, if the MME_UE Context is found, /* Here, if the MME_UE Context is found,
* the integrity check is not performed * the integrity check is not performed
* For example, ATTACH_REQUEST, * For example, ATTACH_REQUEST,
* TRACKING_AREA_UPDATE_REQUEST message * TRACKING_AREA_UPDATE_REQUEST message
* *
* Now, We will check the MAC in the NAS message*/ * Now, We will check the MAC in the NAS message*/
@ -307,7 +307,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
h.type = e->nas_type; h.type = e->nas_type;
if (h.integrity_protected) { if (h.integrity_protected) {
/* Decryption was performed in S1AP handler. /* Decryption was performed in S1AP handler.
* So, we disabled 'ciphered' * So, we disabled 'ciphered'
* not to decrypt NAS message */ * not to decrypt NAS message */
h.ciphered = 0; h.ciphered = 0;
if (nas_eps_security_decode(mme_ue, h, pkbuf) != OGS_OK) { if (nas_eps_security_decode(mme_ue, h, pkbuf) != OGS_OK) {
@ -407,7 +407,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
} else if (OGS_FSM_CHECK(&bearer->sm, esm_state_exception)) { } else if (OGS_FSM_CHECK(&bearer->sm, esm_state_exception)) {
/* /*
* The UE requested the wrong APN. * The UE requested the wrong APN.
* *
* From the Issues #568, MME need to accept further service request. * From the Issues #568, MME need to accept further service request.
@ -514,8 +514,8 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
pkbuf = e->pkbuf; pkbuf = e->pkbuf;
ogs_assert(pkbuf); ogs_assert(pkbuf);
if (ogs_gtp_parse_msg(&gtp_message, pkbuf) != OGS_OK) { if (ogs_gtp2_parse_msg(&gtp_message, pkbuf) != OGS_OK) {
ogs_error("ogs_gtp_parse_msg() failed"); ogs_error("ogs_gtp2_parse_msg() failed");
ogs_pkbuf_free(pkbuf); ogs_pkbuf_free(pkbuf);
break; break;
} }
@ -570,41 +570,41 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
} }
switch (gtp_message.h.type) { switch (gtp_message.h.type) {
case OGS_GTP_ECHO_REQUEST_TYPE: case OGS_GTP2_ECHO_REQUEST_TYPE:
mme_s11_handle_echo_request(xact, &gtp_message.echo_request); mme_s11_handle_echo_request(xact, &gtp_message.echo_request);
break; break;
case OGS_GTP_ECHO_RESPONSE_TYPE: case OGS_GTP2_ECHO_RESPONSE_TYPE:
mme_s11_handle_echo_response(xact, &gtp_message.echo_response); mme_s11_handle_echo_response(xact, &gtp_message.echo_response);
break; break;
case OGS_GTP_CREATE_SESSION_RESPONSE_TYPE: case OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE:
mme_s11_handle_create_session_response( mme_s11_handle_create_session_response(
xact, mme_ue, &gtp_message.create_session_response); xact, mme_ue, &gtp_message.create_session_response);
break; break;
case OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE: case OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE:
mme_s11_handle_modify_bearer_response( mme_s11_handle_modify_bearer_response(
xact, mme_ue, &gtp_message.modify_bearer_response); xact, mme_ue, &gtp_message.modify_bearer_response);
break; break;
case OGS_GTP_DELETE_SESSION_RESPONSE_TYPE: case OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE:
mme_s11_handle_delete_session_response( mme_s11_handle_delete_session_response(
xact, mme_ue, &gtp_message.delete_session_response); xact, mme_ue, &gtp_message.delete_session_response);
break; break;
case OGS_GTP_CREATE_BEARER_REQUEST_TYPE: case OGS_GTP2_CREATE_BEARER_REQUEST_TYPE:
mme_s11_handle_create_bearer_request( mme_s11_handle_create_bearer_request(
xact, mme_ue, &gtp_message.create_bearer_request); xact, mme_ue, &gtp_message.create_bearer_request);
break; break;
case OGS_GTP_UPDATE_BEARER_REQUEST_TYPE: case OGS_GTP2_UPDATE_BEARER_REQUEST_TYPE:
mme_s11_handle_update_bearer_request( mme_s11_handle_update_bearer_request(
xact, mme_ue, &gtp_message.update_bearer_request); xact, mme_ue, &gtp_message.update_bearer_request);
break; break;
case OGS_GTP_DELETE_BEARER_REQUEST_TYPE: case OGS_GTP2_DELETE_BEARER_REQUEST_TYPE:
mme_s11_handle_delete_bearer_request( mme_s11_handle_delete_bearer_request(
xact, mme_ue, &gtp_message.delete_bearer_request); xact, mme_ue, &gtp_message.delete_bearer_request);
break; break;
case OGS_GTP_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE: case OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE:
mme_s11_handle_release_access_bearers_response( mme_s11_handle_release_access_bearers_response(
xact, mme_ue, &gtp_message.release_access_bearers_response); xact, mme_ue, &gtp_message.release_access_bearers_response);
break; break;
case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_TYPE: case OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_TYPE:
if (!mme_ue) { if (!mme_ue) {
if (gtp_message.h.teid_presence) if (gtp_message.h.teid_presence)
ogs_warn("No Context : TEID[%d]", gtp_message.h.teid); ogs_warn("No Context : TEID[%d]", gtp_message.h.teid);
@ -616,17 +616,17 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
mme_s11_handle_downlink_data_notification( mme_s11_handle_downlink_data_notification(
xact, mme_ue, &gtp_message.downlink_data_notification); xact, mme_ue, &gtp_message.downlink_data_notification);
break; break;
case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE: case OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
mme_s11_handle_create_indirect_data_forwarding_tunnel_response( mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
xact, mme_ue, xact, mme_ue,
&gtp_message.create_indirect_data_forwarding_tunnel_response); &gtp_message.create_indirect_data_forwarding_tunnel_response);
break; break;
case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE: case OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
mme_s11_handle_delete_indirect_data_forwarding_tunnel_response( mme_s11_handle_delete_indirect_data_forwarding_tunnel_response(
xact, mme_ue, xact, mme_ue,
&gtp_message.delete_indirect_data_forwarding_tunnel_response); &gtp_message.delete_indirect_data_forwarding_tunnel_response);
break; break;
case OGS_GTP_BEARER_RESOURCE_FAILURE_INDICATION_TYPE: case OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE:
mme_s11_handle_bearer_resource_failure_indication( mme_s11_handle_bearer_resource_failure_indication(
xact, mme_ue, xact, mme_ue,
&gtp_message.bearer_resource_failure_indication); &gtp_message.bearer_resource_failure_indication);
@ -658,7 +658,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
vlr->max_num_of_ostreams = vlr->max_num_of_ostreams =
ogs_min(max_num_of_ostreams, vlr->max_num_of_ostreams); ogs_min(max_num_of_ostreams, vlr->max_num_of_ostreams);
ogs_debug("VLR-SGs SCTP_COMM_UP[%s] Max Num of Outbound Streams[%d]", ogs_debug("VLR-SGs SCTP_COMM_UP[%s] Max Num of Outbound Streams[%d]",
OGS_ADDR(vlr->addr, buf), vlr->max_num_of_ostreams); OGS_ADDR(vlr->addr, buf), vlr->max_num_of_ostreams);
e->vlr = vlr; e->vlr = vlr;
@ -684,7 +684,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
e->vlr = vlr; e->vlr = vlr;
ogs_fsm_dispatch(&vlr->sm, e); ogs_fsm_dispatch(&vlr->sm, e);
ogs_info("VLR-SGs[%s] connection refused!!!", ogs_info("VLR-SGs[%s] connection refused!!!",
OGS_ADDR(vlr->addr, buf)); OGS_ADDR(vlr->addr, buf));
} else { } else {

View File

@ -757,7 +757,7 @@ void s1ap_handle_initial_context_setup_response(
} }
if (mme_ue->nas_eps.type != MME_EPS_TYPE_ATTACH_REQUEST) if (mme_ue->nas_eps.type != MME_EPS_TYPE_ATTACH_REQUEST)
mme_send_after_paging(mme_ue, OGS_GTP_CAUSE_REQUEST_ACCEPTED); mme_send_after_paging(mme_ue, OGS_GTP2_CAUSE_REQUEST_ACCEPTED);
if (SMS_SERVICE_INDICATOR(mme_ue)) { if (SMS_SERVICE_INDICATOR(mme_ue)) {
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
@ -1218,7 +1218,7 @@ void s1ap_handle_e_rab_setup_response(
} else { } else {
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
mme_gtp_send_create_bearer_response( mme_gtp_send_create_bearer_response(
bearer, OGS_GTP_CAUSE_REQUEST_ACCEPTED)); bearer, OGS_GTP2_CAUSE_REQUEST_ACCEPTED));
} }
} }
} }

View File

@ -136,10 +136,10 @@ int sgwc_context_parse_config(void)
return OGS_OK; return OGS_OK;
} }
sgwc_ue_t *sgwc_ue_add_by_message(ogs_gtp_message_t *message) sgwc_ue_t *sgwc_ue_add_by_message(ogs_gtp2_message_t *message)
{ {
sgwc_ue_t *sgwc_ue = NULL; sgwc_ue_t *sgwc_ue = NULL;
ogs_gtp_create_session_request_t *req = &message->create_session_request; ogs_gtp2_create_session_request_t *req = &message->create_session_request;
ogs_assert(message); ogs_assert(message);
@ -152,7 +152,7 @@ sgwc_ue_t *sgwc_ue_add_by_message(ogs_gtp_message_t *message)
ogs_trace("sgwc_ue_add_by_message() - IMSI "); ogs_trace("sgwc_ue_add_by_message() - IMSI ");
ogs_log_hexdump(OGS_LOG_TRACE, req->imsi.data, req->imsi.len); ogs_log_hexdump(OGS_LOG_TRACE, req->imsi.data, req->imsi.len);
/* /*
* 7.2.1 in 3GPP TS 29.274 Release 15 * 7.2.1 in 3GPP TS 29.274 Release 15
* *
* If the new Create Session Request received by the SGW collides with * If the new Create Session Request received by the SGW collides with
@ -418,7 +418,7 @@ int sgwc_sess_remove(sgwc_sess_t *sess)
void sgwc_sess_remove_all(sgwc_ue_t *sgwc_ue) void sgwc_sess_remove_all(sgwc_ue_t *sgwc_ue)
{ {
sgwc_sess_t *sess = NULL, *next_sess = NULL; sgwc_sess_t *sess = NULL, *next_sess = NULL;
ogs_assert(sgwc_ue); ogs_assert(sgwc_ue);
ogs_list_for_each_safe(&sgwc_ue->sess_list, next_sess, sess) ogs_list_for_each_safe(&sgwc_ue->sess_list, next_sess, sess)
sgwc_sess_remove(sess); sgwc_sess_remove(sess);
@ -489,15 +489,15 @@ sgwc_bearer_t *sgwc_bearer_add(sgwc_sess_t *sess)
bearer->sess = sess; bearer->sess = sess;
/* Downlink */ /* Downlink */
tunnel = sgwc_tunnel_add(bearer, OGS_GTP_F_TEID_S5_S8_SGW_GTP_U); tunnel = sgwc_tunnel_add(bearer, OGS_GTP2_F_TEID_S5_S8_SGW_GTP_U);
ogs_assert(tunnel); ogs_assert(tunnel);
/* Uplink */ /* Uplink */
tunnel = sgwc_tunnel_add(bearer, OGS_GTP_F_TEID_S1_U_SGW_GTP_U); tunnel = sgwc_tunnel_add(bearer, OGS_GTP2_F_TEID_S1_U_SGW_GTP_U);
ogs_assert(tunnel); ogs_assert(tunnel);
ogs_list_add(&sess->bearer_list, bearer); ogs_list_add(&sess->bearer_list, bearer);
return bearer; return bearer;
} }
@ -539,7 +539,7 @@ sgwc_bearer_t *sgwc_bearer_find_by_ue_ebi(sgwc_ue_t *sgwc_ue, uint8_t ebi)
{ {
sgwc_sess_t *sess = NULL; sgwc_sess_t *sess = NULL;
sgwc_bearer_t *bearer = NULL; sgwc_bearer_t *bearer = NULL;
ogs_assert(sgwc_ue); ogs_assert(sgwc_ue);
ogs_list_for_each(&sgwc_ue->sess_list, sess) { ogs_list_for_each(&sgwc_ue->sess_list, sess) {
ogs_list_for_each(&sess->bearer_list, bearer) { ogs_list_for_each(&sess->bearer_list, bearer) {
@ -643,20 +643,20 @@ sgwc_tunnel_t *sgwc_tunnel_add(
switch (interface_type) { switch (interface_type) {
/* Downlink */ /* Downlink */
case OGS_GTP_F_TEID_S5_S8_SGW_GTP_U: case OGS_GTP2_F_TEID_S5_S8_SGW_GTP_U:
src_if = OGS_PFCP_INTERFACE_CORE; src_if = OGS_PFCP_INTERFACE_CORE;
dst_if = OGS_PFCP_INTERFACE_ACCESS; dst_if = OGS_PFCP_INTERFACE_ACCESS;
break; break;
/* Uplink */ /* Uplink */
case OGS_GTP_F_TEID_S1_U_SGW_GTP_U: case OGS_GTP2_F_TEID_S1_U_SGW_GTP_U:
src_if = OGS_PFCP_INTERFACE_ACCESS; src_if = OGS_PFCP_INTERFACE_ACCESS;
dst_if = OGS_PFCP_INTERFACE_CORE; dst_if = OGS_PFCP_INTERFACE_CORE;
break; break;
/* Indirect */ /* Indirect */
case OGS_GTP_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING: case OGS_GTP2_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING:
case OGS_GTP_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING: case OGS_GTP2_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING:
src_if = OGS_PFCP_INTERFACE_ACCESS; src_if = OGS_PFCP_INTERFACE_ACCESS;
dst_if = OGS_PFCP_INTERFACE_ACCESS; dst_if = OGS_PFCP_INTERFACE_ACCESS;
break; break;
@ -848,13 +848,13 @@ sgwc_tunnel_t *sgwc_dl_tunnel_in_bearer(sgwc_bearer_t *bearer)
{ {
ogs_assert(bearer); ogs_assert(bearer);
return sgwc_tunnel_find_by_interface_type(bearer, return sgwc_tunnel_find_by_interface_type(bearer,
OGS_GTP_F_TEID_S5_S8_SGW_GTP_U); OGS_GTP2_F_TEID_S5_S8_SGW_GTP_U);
} }
sgwc_tunnel_t *sgwc_ul_tunnel_in_bearer(sgwc_bearer_t *bearer) sgwc_tunnel_t *sgwc_ul_tunnel_in_bearer(sgwc_bearer_t *bearer)
{ {
ogs_assert(bearer); ogs_assert(bearer);
return sgwc_tunnel_find_by_interface_type(bearer, return sgwc_tunnel_find_by_interface_type(bearer,
OGS_GTP_F_TEID_S1_U_SGW_GTP_U); OGS_GTP2_F_TEID_S1_U_SGW_GTP_U);
} }
static void stats_add_sgwc_session(void) static void stats_add_sgwc_session(void)

View File

@ -142,7 +142,7 @@ sgwc_context_t *sgwc_self(void);
int sgwc_context_parse_config(void); int sgwc_context_parse_config(void);
sgwc_ue_t *sgwc_ue_add_by_message(ogs_gtp_message_t *message); sgwc_ue_t *sgwc_ue_add_by_message(ogs_gtp2_message_t *message);
sgwc_ue_t *sgwc_ue_find_by_imsi(uint8_t *imsi, int imsi_len); sgwc_ue_t *sgwc_ue_find_by_imsi(uint8_t *imsi, int imsi_len);
sgwc_ue_t *sgwc_ue_find_by_imsi_bcd(char *imsi_bcd); sgwc_ue_t *sgwc_ue_find_by_imsi_bcd(char *imsi_bcd);
sgwc_ue_t *sgwc_ue_find_by_teid(uint32_t teid); sgwc_ue_t *sgwc_ue_find_by_teid(uint32_t teid);

View File

@ -27,7 +27,7 @@ extern "C" {
#endif #endif
typedef struct ogs_gtp_node_s ogs_gtp_node_t; typedef struct ogs_gtp_node_s ogs_gtp_node_t;
typedef struct ogs_gtp_message_s ogs_gtp_message_t; typedef struct ogs_gtp2_message_s ogs_gtp2_message_t;
typedef struct ogs_pfcp_node_s ogs_pfcp_node_t; typedef struct ogs_pfcp_node_s ogs_pfcp_node_t;
typedef struct ogs_pfcp_xact_s ogs_pfcp_xact_t; typedef struct ogs_pfcp_xact_s ogs_pfcp_xact_t;
typedef struct ogs_pfcp_message_s ogs_pfcp_message_t; typedef struct ogs_pfcp_message_s ogs_pfcp_message_t;
@ -53,7 +53,7 @@ typedef struct sgwc_event_s {
int timer_id; int timer_id;
ogs_gtp_node_t *gnode; ogs_gtp_node_t *gnode;
ogs_gtp_message_t *gtp_message; ogs_gtp2_message_t *gtp_message;
ogs_pfcp_node_t *pfcp_node; ogs_pfcp_node_t *pfcp_node;
ogs_pfcp_xact_t *pfcp_xact; ogs_pfcp_xact_t *pfcp_xact;

View File

@ -150,7 +150,7 @@ static void bearer_timeout(ogs_gtp_xact_t *xact, void *data)
type = xact->seq[0].type; type = xact->seq[0].type;
switch (type) { switch (type) {
case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_TYPE: case OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_TYPE:
ogs_warn("[%s] No Downlink Data Notification ACK", sgwc_ue->imsi_bcd); ogs_warn("[%s] No Downlink Data Notification ACK", sgwc_ue->imsi_bcd);
break; break;
default: default:
@ -170,7 +170,7 @@ int sgwc_gtp_send_downlink_data_notification(
ogs_gtp_xact_t *gtp_xact = NULL; ogs_gtp_xact_t *gtp_xact = NULL;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_assert(bearer); ogs_assert(bearer);
@ -184,8 +184,8 @@ int sgwc_gtp_send_downlink_data_notification(
ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]", ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]",
sgwc_ue->mme_s11_teid, sgwc_ue->sgw_s11_teid); sgwc_ue->mme_s11_teid, sgwc_ue->sgw_s11_teid);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_DOWNLINK_DATA_NOTIFICATION_TYPE; h.type = OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_TYPE;
h.teid = sgwc_ue->mme_s11_teid; h.teid = sgwc_ue->mme_s11_teid;
pkbuf = sgwc_s11_build_downlink_data_notification(cause_value, bearer); pkbuf = sgwc_s11_build_downlink_data_notification(cause_value, bearer);

View File

@ -22,10 +22,10 @@
ogs_pkbuf_t *sgwc_s11_build_downlink_data_notification( ogs_pkbuf_t *sgwc_s11_build_downlink_data_notification(
uint8_t cause_value, sgwc_bearer_t *bearer) uint8_t cause_value, sgwc_bearer_t *bearer)
{ {
ogs_gtp_message_t message; ogs_gtp2_message_t message;
ogs_gtp_downlink_data_notification_t *noti = NULL; ogs_gtp2_downlink_data_notification_t *noti = NULL;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_gtp_arp_t arp; ogs_gtp2_arp_t arp;
sgwc_sess_t *sess = NULL; sgwc_sess_t *sess = NULL;
ogs_assert(bearer); ogs_assert(bearer);
@ -34,7 +34,7 @@ ogs_pkbuf_t *sgwc_s11_build_downlink_data_notification(
/* Build downlink notification message */ /* Build downlink notification message */
noti = &message.downlink_data_notification; noti = &message.downlink_data_notification;
memset(&message, 0, sizeof(ogs_gtp_message_t)); memset(&message, 0, sizeof(ogs_gtp2_message_t));
/* /*
* TS29.274 8.4 Cause Value * TS29.274 8.4 Cause Value
@ -42,7 +42,7 @@ ogs_pkbuf_t *sgwc_s11_build_downlink_data_notification(
* 0 : Reserved. Shall not be sent and * 0 : Reserved. Shall not be sent and
* if received the Cause shall be treated as an invalid IE * if received the Cause shall be treated as an invalid IE
*/ */
if (cause_value != OGS_GTP_CAUSE_UNDEFINED_VALUE) { if (cause_value != OGS_GTP2_CAUSE_UNDEFINED_VALUE) {
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = cause_value; cause.value = cause_value;
noti->cause.presence = 1; noti->cause.presence = 1;
@ -63,6 +63,6 @@ ogs_pkbuf_t *sgwc_s11_build_downlink_data_notification(
noti->allocation_retention_priority.data = &arp; noti->allocation_retention_priority.data = &arp;
noti->allocation_retention_priority.len = sizeof(arp); noti->allocation_retention_priority.len = sizeof(arp);
message.h.type = OGS_GTP_DOWNLINK_DATA_NOTIFICATION_TYPE; message.h.type = OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_TYPE;
return ogs_gtp_build_msg(&message); return ogs_gtp2_build_msg(&message);
} }

View File

@ -36,7 +36,7 @@ static void sess_timeout(ogs_gtp_xact_t *xact, void *data)
type = xact->seq[0].type; type = xact->seq[0].type;
switch (type) { switch (type) {
case OGS_GTP_DELETE_SESSION_REQUEST_TYPE: case OGS_GTP2_DELETE_SESSION_REQUEST_TYPE:
ogs_error("[%s] No Delete Session Response", sgwc_ue->imsi_bcd); ogs_error("[%s] No Delete Session Response", sgwc_ue->imsi_bcd);
if (!sgwc_sess_cycle(sess)) { if (!sgwc_sess_cycle(sess)) {
ogs_warn("[%s] Session has already been removed", ogs_warn("[%s] Session has already been removed",
@ -77,33 +77,33 @@ static void bearer_timeout(ogs_gtp_xact_t *xact, void *data)
static uint8_t pfcp_cause_from_gtp(uint8_t gtp_cause) static uint8_t pfcp_cause_from_gtp(uint8_t gtp_cause)
{ {
switch (gtp_cause) { switch (gtp_cause) {
case OGS_GTP_CAUSE_REQUEST_ACCEPTED: case OGS_GTP2_CAUSE_REQUEST_ACCEPTED:
return OGS_PFCP_CAUSE_REQUEST_ACCEPTED; return OGS_PFCP_CAUSE_REQUEST_ACCEPTED;
case OGS_GTP_CAUSE_REQUEST_REJECTED_REASON_NOT_SPECIFIED: case OGS_GTP2_CAUSE_REQUEST_REJECTED_REASON_NOT_SPECIFIED:
return OGS_PFCP_CAUSE_REQUEST_REJECTED; return OGS_PFCP_CAUSE_REQUEST_REJECTED;
case OGS_GTP_CAUSE_CONTEXT_NOT_FOUND: case OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND:
return OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND; return OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND;
case OGS_GTP_CAUSE_MANDATORY_IE_MISSING: case OGS_GTP2_CAUSE_MANDATORY_IE_MISSING:
return OGS_PFCP_CAUSE_MANDATORY_IE_MISSING; return OGS_PFCP_CAUSE_MANDATORY_IE_MISSING;
case OGS_GTP_CAUSE_CONDITIONAL_IE_MISSING: case OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING:
return OGS_PFCP_CAUSE_CONDITIONAL_IE_MISSING; return OGS_PFCP_CAUSE_CONDITIONAL_IE_MISSING;
case OGS_GTP_CAUSE_INVALID_LENGTH: case OGS_GTP2_CAUSE_INVALID_LENGTH:
return OGS_PFCP_CAUSE_INVALID_LENGTH; return OGS_PFCP_CAUSE_INVALID_LENGTH;
case OGS_GTP_CAUSE_MANDATORY_IE_INCORRECT: case OGS_GTP2_CAUSE_MANDATORY_IE_INCORRECT:
return OGS_PFCP_CAUSE_MANDATORY_IE_INCORRECT; return OGS_PFCP_CAUSE_MANDATORY_IE_INCORRECT;
case OGS_GTP_CAUSE_INVALID_MESSAGE_FORMAT: case OGS_GTP2_CAUSE_INVALID_MESSAGE_FORMAT:
return OGS_PFCP_CAUSE_INVALID_FORWARDING_POLICY; return OGS_PFCP_CAUSE_INVALID_FORWARDING_POLICY;
case OGS_GTP_CAUSE_REMOTE_PEER_NOT_RESPONDING: case OGS_GTP2_CAUSE_REMOTE_PEER_NOT_RESPONDING:
return OGS_PFCP_CAUSE_NO_ESTABLISHED_PFCP_ASSOCIATION; return OGS_PFCP_CAUSE_NO_ESTABLISHED_PFCP_ASSOCIATION;
case OGS_GTP_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION: case OGS_GTP2_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION:
return OGS_PFCP_CAUSE_RULE_CREATION_MODIFICATION_FAILURE; return OGS_PFCP_CAUSE_RULE_CREATION_MODIFICATION_FAILURE;
case OGS_GTP_CAUSE_GTP_C_ENTITY_CONGESTION: case OGS_GTP2_CAUSE_GTP_C_ENTITY_CONGESTION:
return OGS_PFCP_CAUSE_PFCP_ENTITY_IN_CONGESTION; return OGS_PFCP_CAUSE_PFCP_ENTITY_IN_CONGESTION;
case OGS_GTP_CAUSE_NO_RESOURCES_AVAILABLE: case OGS_GTP2_CAUSE_NO_RESOURCES_AVAILABLE:
return OGS_PFCP_CAUSE_NO_RESOURCES_AVAILABLE; return OGS_PFCP_CAUSE_NO_RESOURCES_AVAILABLE;
case OGS_GTP_CAUSE_SERVICE_NOT_SUPPORTED: case OGS_GTP2_CAUSE_SERVICE_NOT_SUPPORTED:
return OGS_PFCP_CAUSE_SERVICE_NOT_SUPPORTED; return OGS_PFCP_CAUSE_SERVICE_NOT_SUPPORTED;
case OGS_GTP_CAUSE_SYSTEM_FAILURE: case OGS_GTP2_CAUSE_SYSTEM_FAILURE:
return OGS_PFCP_CAUSE_SYSTEM_FAILURE; return OGS_PFCP_CAUSE_SYSTEM_FAILURE;
default: default:
return OGS_PFCP_CAUSE_SYSTEM_FAILURE; return OGS_PFCP_CAUSE_SYSTEM_FAILURE;
@ -114,19 +114,19 @@ static uint8_t pfcp_cause_from_gtp(uint8_t gtp_cause)
void sgwc_s11_handle_create_session_request( void sgwc_s11_handle_create_session_request(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
uint8_t cause_value = 0; uint8_t cause_value = 0;
sgwc_sess_t *sess = NULL; sgwc_sess_t *sess = NULL;
sgwc_bearer_t *bearer = NULL; sgwc_bearer_t *bearer = NULL;
ogs_gtp_create_session_request_t *req = NULL; ogs_gtp2_create_session_request_t *req = NULL;
uint16_t decoded; uint16_t decoded;
ogs_gtp_f_teid_t *mme_s11_teid = NULL; ogs_gtp2_f_teid_t *mme_s11_teid = NULL;
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
ogs_gtp_bearer_qos_t bearer_qos; ogs_gtp2_bearer_qos_t bearer_qos;
char apn[OGS_MAX_APN_LEN+1]; char apn[OGS_MAX_APN_LEN+1];
ogs_assert(s11_xact); ogs_assert(s11_xact);
@ -137,54 +137,54 @@ void sgwc_s11_handle_create_session_request(
ogs_debug("Create Session Request"); ogs_debug("Create Session Request");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (req->imsi.presence == 0) { if (req->imsi.presence == 0) {
ogs_error("No IMSI"); ogs_error("No IMSI");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts_to_be_created.presence == 0) { if (req->bearer_contexts_to_be_created.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts_to_be_created.eps_bearer_id.presence == 0) { if (req->bearer_contexts_to_be_created.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts_to_be_created.bearer_level_qos.presence == 0) { if (req->bearer_contexts_to_be_created.bearer_level_qos.presence == 0) {
ogs_error("No Bearer QoS"); ogs_error("No Bearer QoS");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->access_point_name.presence == 0) { if (req->access_point_name.presence == 0) {
ogs_error("No APN"); ogs_error("No APN");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->sender_f_teid_for_control_plane.presence == 0) { if (req->sender_f_teid_for_control_plane.presence == 0) {
ogs_error("No Sender F-TEID"); ogs_error("No Sender F-TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->pgw_s5_s8_address_for_control_plane_or_pmip.presence == 0) { if (req->pgw_s5_s8_address_for_control_plane_or_pmip.presence == 0) {
ogs_error("No PGW IP"); ogs_error("No PGW IP");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->user_location_information.presence == 0) { if (req->user_location_information.presence == 0) {
ogs_error("No User Location Inforamtion"); ogs_error("No User Location Inforamtion");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->pdn_type.presence == 0) { if (req->pdn_type.presence == 0) {
ogs_error("No PDN Type"); ogs_error("No PDN Type");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (!sgwc_ue) { if (!sgwc_ue) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -203,7 +203,7 @@ void sgwc_s11_handle_create_session_request(
ogs_assert(sess); ogs_assert(sess);
/* Set User Location Information */ /* Set User Location Information */
decoded = ogs_gtp_parse_uli(&uli, &req->user_location_information); decoded = ogs_gtp2_parse_uli(&uli, &req->user_location_information);
ogs_assert(req->user_location_information.len == decoded); ogs_assert(req->user_location_information.len == decoded);
ogs_nas_to_plmn_id(&sgwc_ue->e_tai.plmn_id, &uli.tai.nas_plmn_id); ogs_nas_to_plmn_id(&sgwc_ue->e_tai.plmn_id, &uli.tai.nas_plmn_id);
sgwc_ue->e_tai.tac = uli.tai.tac; sgwc_ue->e_tai.tac = uli.tai.tac;
@ -225,13 +225,13 @@ void sgwc_s11_handle_create_session_request(
if (!OGS_FSM_CHECK(&sess->pfcp_node->sm, sgwc_pfcp_state_associated)) { if (!OGS_FSM_CHECK(&sess->pfcp_node->sm, sgwc_pfcp_state_associated)) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE,
OGS_GTP_CAUSE_REMOTE_PEER_NOT_RESPONDING); OGS_GTP2_CAUSE_REMOTE_PEER_NOT_RESPONDING);
return; return;
} }
/* Set Bearer QoS */ /* Set Bearer QoS */
decoded = ogs_gtp_parse_bearer_qos(&bearer_qos, decoded = ogs_gtp2_parse_bearer_qos(&bearer_qos,
&req->bearer_contexts_to_be_created.bearer_level_qos); &req->bearer_contexts_to_be_created.bearer_level_qos);
ogs_assert(req->bearer_contexts_to_be_created.bearer_level_qos.len == ogs_assert(req->bearer_contexts_to_be_created.bearer_level_qos.len ==
decoded); decoded);
@ -270,7 +270,7 @@ void sgwc_s11_handle_create_session_request(
void sgwc_s11_handle_modify_bearer_request( void sgwc_s11_handle_modify_bearer_request(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv; int rv;
uint16_t decoded; uint16_t decoded;
@ -283,11 +283,11 @@ void sgwc_s11_handle_modify_bearer_request(
ogs_ip_t remote_ip; ogs_ip_t remote_ip;
ogs_ip_t zero_ip; ogs_ip_t zero_ip;
ogs_gtp_modify_bearer_request_t *req = NULL; ogs_gtp2_modify_bearer_request_t *req = NULL;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
ogs_gtp_f_teid_t *enb_s1u_teid = NULL; ogs_gtp2_f_teid_t *enb_s1u_teid = NULL;
ogs_assert(s11_xact); ogs_assert(s11_xact);
ogs_assert(message); ogs_assert(message);
@ -297,43 +297,43 @@ void sgwc_s11_handle_modify_bearer_request(
ogs_debug("Modify Bearer Request"); ogs_debug("Modify Bearer Request");
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (req->bearer_contexts_to_be_modified.presence == 0) { if (req->bearer_contexts_to_be_modified.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause.value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause.value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts_to_be_modified.eps_bearer_id.presence == 0) { if (req->bearer_contexts_to_be_modified.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause.value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause.value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts_to_be_modified.s1_u_enodeb_f_teid.presence == 0) { if (req->bearer_contexts_to_be_modified.s1_u_enodeb_f_teid.presence == 0) {
ogs_error("No eNB TEID"); ogs_error("No eNB TEID");
cause.value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause.value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (!sgwc_ue) { if (!sgwc_ue) {
ogs_error("No Context"); ogs_error("No Context");
cause.value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause.value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause.value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause.value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
bearer = sgwc_bearer_find_by_ue_ebi(sgwc_ue, bearer = sgwc_bearer_find_by_ue_ebi(sgwc_ue,
req->bearer_contexts_to_be_modified.eps_bearer_id.u8); req->bearer_contexts_to_be_modified.eps_bearer_id.u8);
if (!bearer) if (!bearer)
ogs_error("Unknown EPS Bearer ID[%d]", ogs_error("Unknown EPS Bearer ID[%d]",
req->bearer_contexts_to_be_modified.eps_bearer_id.u8); req->bearer_contexts_to_be_modified.eps_bearer_id.u8);
} }
if (!bearer) { if (!bearer) {
ogs_warn("No Context"); ogs_warn("No Context");
cause.value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause.value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause.value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause.value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE, cause.value); OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause.value);
return; return;
} }
@ -348,17 +348,17 @@ void sgwc_s11_handle_modify_bearer_request(
enb_s1u_teid = req->bearer_contexts_to_be_modified.s1_u_enodeb_f_teid.data; enb_s1u_teid = req->bearer_contexts_to_be_modified.s1_u_enodeb_f_teid.data;
dl_tunnel->remote_teid = be32toh(enb_s1u_teid->teid); dl_tunnel->remote_teid = be32toh(enb_s1u_teid->teid);
rv = ogs_gtp_f_teid_to_ip(enb_s1u_teid, &remote_ip); rv = ogs_gtp2_f_teid_to_ip(enb_s1u_teid, &remote_ip);
if (rv != OGS_OK) { if (rv != OGS_OK) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE, OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE,
OGS_GTP_CAUSE_MANDATORY_IE_MISSING); OGS_GTP2_CAUSE_MANDATORY_IE_MISSING);
return; return;
} }
if (req->user_location_information.presence == 1) { if (req->user_location_information.presence == 1) {
decoded = ogs_gtp_parse_uli( decoded = ogs_gtp2_parse_uli(
&uli, &req->user_location_information); &uli, &req->user_location_information);
ogs_assert(req->user_location_information.len == decoded); ogs_assert(req->user_location_information.len == decoded);
ogs_nas_to_plmn_id(&sgwc_ue->e_tai.plmn_id, &uli.tai.nas_plmn_id); ogs_nas_to_plmn_id(&sgwc_ue->e_tai.plmn_id, &uli.tai.nas_plmn_id);
@ -414,13 +414,13 @@ void sgwc_s11_handle_modify_bearer_request(
void sgwc_s11_handle_delete_session_request( void sgwc_s11_handle_delete_session_request(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
sgwc_sess_t *sess = NULL; sgwc_sess_t *sess = NULL;
ogs_gtp_xact_t *s5c_xact = NULL; ogs_gtp_xact_t *s5c_xact = NULL;
ogs_gtp_delete_session_request_t *req = NULL; ogs_gtp2_delete_session_request_t *req = NULL;
ogs_assert(s11_xact); ogs_assert(s11_xact);
ogs_assert(gtpbuf); ogs_assert(gtpbuf);
@ -430,19 +430,19 @@ void sgwc_s11_handle_delete_session_request(
ogs_debug("Delete Session Request"); ogs_debug("Delete Session Request");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (req->linked_eps_bearer_id.presence == 0) { if (req->linked_eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (!sgwc_ue) { if (!sgwc_ue) {
ogs_error("No Context"); ogs_error("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
sess = sgwc_sess_find_by_ebi(sgwc_ue, req->linked_eps_bearer_id.u8); sess = sgwc_sess_find_by_ebi(sgwc_ue, req->linked_eps_bearer_id.u8);
if (!sess) if (!sess)
ogs_error("Unknown EPS Bearer [IMSI:%s, EBI:%d]", ogs_error("Unknown EPS Bearer [IMSI:%s, EBI:%d]",
@ -451,18 +451,18 @@ void sgwc_s11_handle_delete_session_request(
if (!sess) { if (!sess) {
ogs_error("No Context"); ogs_error("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (!sess->gnode) { if (!sess->gnode) {
ogs_error("No GTP Node"); ogs_error("No GTP Node");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_DELETE_SESSION_RESPONSE_TYPE, cause_value); OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -474,10 +474,10 @@ void sgwc_s11_handle_delete_session_request(
ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]", ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]",
sess->sgw_s5c_teid, sess->pgw_s5c_teid); sess->sgw_s5c_teid, sess->pgw_s5c_teid);
message->h.type = OGS_GTP_DELETE_SESSION_REQUEST_TYPE; message->h.type = OGS_GTP2_DELETE_SESSION_REQUEST_TYPE;
message->h.teid = sess->pgw_s5c_teid; message->h.teid = sess->pgw_s5c_teid;
gtpbuf = ogs_gtp_build_msg(message); gtpbuf = ogs_gtp2_build_msg(message);
ogs_expect_or_return(gtpbuf); ogs_expect_or_return(gtpbuf);
s5c_xact = ogs_gtp_xact_local_create( s5c_xact = ogs_gtp_xact_local_create(
@ -492,7 +492,7 @@ void sgwc_s11_handle_delete_session_request(
void sgwc_s11_handle_create_bearer_response( void sgwc_s11_handle_create_bearer_response(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv; int rv;
uint8_t cause_value; uint8_t cause_value;
@ -505,9 +505,9 @@ void sgwc_s11_handle_create_bearer_response(
ogs_gtp_xact_t *s5c_xact = NULL; ogs_gtp_xact_t *s5c_xact = NULL;
ogs_gtp_create_bearer_response_t *rsp = NULL; ogs_gtp2_create_bearer_response_t *rsp = NULL;
ogs_gtp_f_teid_t *sgw_s1u_teid = NULL, *enb_s1u_teid = NULL; ogs_gtp2_f_teid_t *sgw_s1u_teid = NULL, *enb_s1u_teid = NULL;
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
ogs_assert(s11_xact); ogs_assert(s11_xact);
s5c_xact = s11_xact->assoc_xact; s5c_xact = s11_xact->assoc_xact;
@ -518,30 +518,30 @@ void sgwc_s11_handle_create_bearer_response(
ogs_debug("Create Bearer Response"); ogs_debug("Create Bearer Response");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
rv = ogs_gtp_xact_commit(s11_xact); rv = ogs_gtp_xact_commit(s11_xact);
ogs_expect(rv == OGS_OK); ogs_expect(rv == OGS_OK);
if (rsp->bearer_contexts.presence == 0) { if (rsp->bearer_contexts.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts.eps_bearer_id.presence == 0) { if (rsp->bearer_contexts.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts.s1_u_enodeb_f_teid.presence == 0) { if (rsp->bearer_contexts.s1_u_enodeb_f_teid.presence == 0) {
ogs_error("No eNB TEID"); ogs_error("No eNB TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts.s4_u_sgsn_f_teid.presence == 0) { if (rsp->bearer_contexts.s4_u_sgsn_f_teid.presence == 0) {
ogs_error("No SGW TEID"); ogs_error("No SGW TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->user_location_information.presence == 0) { if (rsp->user_location_information.presence == 0) {
ogs_error("No User Location Inforamtion"); ogs_error("No User Location Inforamtion");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (s11_xact->xid & OGS_GTP_CMD_XACT_ID) if (s11_xact->xid & OGS_GTP_CMD_XACT_ID)
@ -560,15 +560,15 @@ void sgwc_s11_handle_create_bearer_response(
sgwc_ue = sess->sgwc_ue; sgwc_ue = sess->sgwc_ue;
ogs_assert(sgwc_ue); ogs_assert(sgwc_ue);
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
if (rsp->bearer_contexts.cause.presence) { if (rsp->bearer_contexts.cause.presence) {
cause = rsp->bearer_contexts.cause.data; cause = rsp->bearer_contexts.cause.data;
ogs_assert(cause); ogs_assert(cause);
@ -576,23 +576,23 @@ void sgwc_s11_handle_create_bearer_response(
cause_value = cause->value; cause_value = cause->value;
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
} else { } else {
ogs_warn("GTP Failed [CAUSE:%d]", cause_value); ogs_warn("GTP Failed [CAUSE:%d]", cause_value);
} }
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
sgwc_pfcp_send_bearer_modification_request( sgwc_pfcp_send_bearer_modification_request(
bearer, NULL, NULL, bearer, NULL, NULL,
OGS_PFCP_MODIFY_UL_ONLY|OGS_PFCP_MODIFY_REMOVE)); OGS_PFCP_MODIFY_UL_ONLY|OGS_PFCP_MODIFY_REMOVE));
ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0, ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
OGS_GTP_CREATE_BEARER_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -616,11 +616,11 @@ void sgwc_s11_handle_create_bearer_response(
ogs_debug(" ENB_S1U_TEID[%d] SGW_S1U_TEID[%d]", ogs_debug(" ENB_S1U_TEID[%d] SGW_S1U_TEID[%d]",
dl_tunnel->remote_teid, dl_tunnel->local_teid); dl_tunnel->remote_teid, dl_tunnel->local_teid);
rv = ogs_gtp_f_teid_to_ip(enb_s1u_teid, &dl_tunnel->remote_ip); rv = ogs_gtp2_f_teid_to_ip(enb_s1u_teid, &dl_tunnel->remote_ip);
if (rv != OGS_OK) { if (rv != OGS_OK) {
ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0, ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
OGS_GTP_CREATE_BEARER_RESPONSE_TYPE, OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE,
OGS_GTP_CAUSE_MANDATORY_IE_MISSING); OGS_GTP2_CAUSE_MANDATORY_IE_MISSING);
return; return;
} }
@ -634,7 +634,7 @@ void sgwc_s11_handle_create_bearer_response(
&far->outer_header_creation, &far->outer_header_creation_len)); &far->outer_header_creation, &far->outer_header_creation_len));
far->outer_header_creation.teid = dl_tunnel->remote_teid; far->outer_header_creation.teid = dl_tunnel->remote_teid;
decoded = ogs_gtp_parse_uli(&uli, &rsp->user_location_information); decoded = ogs_gtp2_parse_uli(&uli, &rsp->user_location_information);
ogs_assert(rsp->user_location_information.len == decoded); ogs_assert(rsp->user_location_information.len == decoded);
ogs_nas_to_plmn_id(&sgwc_ue->e_tai.plmn_id, &uli.tai.nas_plmn_id); ogs_nas_to_plmn_id(&sgwc_ue->e_tai.plmn_id, &uli.tai.nas_plmn_id);
sgwc_ue->e_tai.tac = uli.tai.tac; sgwc_ue->e_tai.tac = uli.tai.tac;
@ -656,7 +656,7 @@ void sgwc_s11_handle_create_bearer_response(
void sgwc_s11_handle_update_bearer_response( void sgwc_s11_handle_update_bearer_response(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv; int rv;
uint8_t cause_value; uint8_t cause_value;
@ -664,7 +664,7 @@ void sgwc_s11_handle_update_bearer_response(
ogs_gtp_xact_t *s5c_xact = NULL; ogs_gtp_xact_t *s5c_xact = NULL;
sgwc_sess_t *sess = NULL; sgwc_sess_t *sess = NULL;
sgwc_bearer_t *bearer = NULL; sgwc_bearer_t *bearer = NULL;
ogs_gtp_update_bearer_response_t *rsp = NULL; ogs_gtp2_update_bearer_response_t *rsp = NULL;
ogs_assert(s11_xact); ogs_assert(s11_xact);
s5c_xact = s11_xact->assoc_xact; s5c_xact = s11_xact->assoc_xact;
@ -675,18 +675,18 @@ void sgwc_s11_handle_update_bearer_response(
ogs_debug("Update Bearer Response"); ogs_debug("Update Bearer Response");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
rv = ogs_gtp_xact_commit(s11_xact); rv = ogs_gtp_xact_commit(s11_xact);
ogs_expect(rv == OGS_OK); ogs_expect(rv == OGS_OK);
if (rsp->bearer_contexts.presence == 0) { if (rsp->bearer_contexts.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts.eps_bearer_id.presence == 0) { if (rsp->bearer_contexts.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (s11_xact->xid & OGS_GTP_CMD_XACT_ID) if (s11_xact->xid & OGS_GTP_CMD_XACT_ID)
@ -705,15 +705,15 @@ void sgwc_s11_handle_update_bearer_response(
sgwc_ue = sess->sgwc_ue; sgwc_ue = sess->sgwc_ue;
ogs_assert(sgwc_ue); ogs_assert(sgwc_ue);
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
if (rsp->bearer_contexts.cause.presence) { if (rsp->bearer_contexts.cause.presence) {
cause = rsp->bearer_contexts.cause.data; cause = rsp->bearer_contexts.cause.data;
ogs_assert(cause); ogs_assert(cause);
@ -721,19 +721,19 @@ void sgwc_s11_handle_update_bearer_response(
cause_value = cause->value; cause_value = cause->value;
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
} else { } else {
ogs_warn("GTP Failed [CAUSE:%d]", cause_value); ogs_warn("GTP Failed [CAUSE:%d]", cause_value);
} }
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0, ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
OGS_GTP_UPDATE_BEARER_RESPONSE_TYPE, cause_value); OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -742,10 +742,10 @@ void sgwc_s11_handle_update_bearer_response(
ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]", ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]",
sess->sgw_s5c_teid, sess->pgw_s5c_teid); sess->sgw_s5c_teid, sess->pgw_s5c_teid);
message->h.type = OGS_GTP_UPDATE_BEARER_RESPONSE_TYPE; message->h.type = OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE;
message->h.teid = sess->pgw_s5c_teid; message->h.teid = sess->pgw_s5c_teid;
pkbuf = ogs_gtp_build_msg(message); pkbuf = ogs_gtp2_build_msg(message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
rv = ogs_gtp_xact_update_tx(s5c_xact, &message->h, pkbuf); rv = ogs_gtp_xact_update_tx(s5c_xact, &message->h, pkbuf);
@ -757,7 +757,7 @@ void sgwc_s11_handle_update_bearer_response(
void sgwc_s11_handle_delete_bearer_response( void sgwc_s11_handle_delete_bearer_response(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv; int rv;
uint8_t cause_value; uint8_t cause_value;
@ -765,7 +765,7 @@ void sgwc_s11_handle_delete_bearer_response(
sgwc_sess_t *sess = NULL; sgwc_sess_t *sess = NULL;
sgwc_bearer_t *bearer = NULL; sgwc_bearer_t *bearer = NULL;
ogs_gtp_delete_bearer_response_t *rsp = NULL; ogs_gtp2_delete_bearer_response_t *rsp = NULL;
ogs_assert(s11_xact); ogs_assert(s11_xact);
s5c_xact = s11_xact->assoc_xact; s5c_xact = s11_xact->assoc_xact;
@ -776,7 +776,7 @@ void sgwc_s11_handle_delete_bearer_response(
ogs_debug("Delete Bearer Response"); ogs_debug("Delete Bearer Response");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (s11_xact->xid & OGS_GTP_CMD_XACT_ID) if (s11_xact->xid & OGS_GTP_CMD_XACT_ID)
/* MME received Bearer Resource Modification Request */ /* MME received Bearer Resource Modification Request */
@ -797,7 +797,7 @@ void sgwc_s11_handle_delete_bearer_response(
sgwc_ue = sess->sgwc_ue; sgwc_ue = sess->sgwc_ue;
ogs_assert(sgwc_ue); ogs_assert(sgwc_ue);
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (rsp->linked_eps_bearer_id.presence) { if (rsp->linked_eps_bearer_id.presence) {
@ -813,17 +813,17 @@ void sgwc_s11_handle_delete_bearer_response(
* 2. ePDG sends Delete Bearer Response(DEFAULT BEARER) to SMF. * 2. ePDG sends Delete Bearer Response(DEFAULT BEARER) to SMF.
*/ */
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
} else { } else {
ogs_error("GTP Failed [CAUSE:%d]", cause_value); ogs_error("GTP Failed [CAUSE:%d]", cause_value);
} }
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
@ -843,19 +843,19 @@ void sgwc_s11_handle_delete_bearer_response(
*/ */
if (rsp->bearer_contexts.presence == 0) { if (rsp->bearer_contexts.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts.eps_bearer_id.presence == 0) { if (rsp->bearer_contexts.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
if (rsp->bearer_contexts.cause.presence) { if (rsp->bearer_contexts.cause.presence) {
cause = rsp->bearer_contexts.cause.data; cause = rsp->bearer_contexts.cause.data;
ogs_assert(cause); ogs_assert(cause);
@ -863,14 +863,14 @@ void sgwc_s11_handle_delete_bearer_response(
cause_value = cause->value; cause_value = cause->value;
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
} else { } else {
ogs_warn("GTP Failed [CAUSE:%d]", cause_value); ogs_warn("GTP Failed [CAUSE:%d]", cause_value);
} }
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]", ogs_debug(" MME_S11_TEID[%d] SGW_S11_TEID[%d]",
@ -886,12 +886,12 @@ void sgwc_s11_handle_delete_bearer_response(
void sgwc_s11_handle_release_access_bearers_request( void sgwc_s11_handle_release_access_bearers_request(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
sgwc_sess_t *sess = NULL; sgwc_sess_t *sess = NULL;
ogs_gtp_release_access_bearers_request_t *req = NULL; ogs_gtp2_release_access_bearers_request_t *req = NULL;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_assert(s11_xact); ogs_assert(s11_xact);
ogs_assert(message); ogs_assert(message);
@ -901,17 +901,17 @@ void sgwc_s11_handle_release_access_bearers_request(
ogs_debug("Release Access Bearers Request"); ogs_debug("Release Access Bearers Request");
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (!sgwc_ue) { if (!sgwc_ue) {
ogs_warn("No Context"); ogs_warn("No Context");
cause.value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause.value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause.value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause.value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE, cause.value); OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE, cause.value);
return; return;
} }
@ -932,7 +932,7 @@ void sgwc_s11_handle_release_access_bearers_request(
void sgwc_s11_handle_downlink_data_notification_ack( void sgwc_s11_handle_downlink_data_notification_ack(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv; int rv;
uint8_t cause_value; uint8_t cause_value;
@ -940,7 +940,7 @@ void sgwc_s11_handle_downlink_data_notification_ack(
sgwc_bearer_t *bearer = NULL; sgwc_bearer_t *bearer = NULL;
sgwc_sess_t *sess = NULL; sgwc_sess_t *sess = NULL;
ogs_gtp_downlink_data_notification_acknowledge_t *ack = NULL; ogs_gtp2_downlink_data_notification_acknowledge_t *ack = NULL;
ogs_assert(s11_xact); ogs_assert(s11_xact);
ogs_assert(message); ogs_assert(message);
@ -954,17 +954,17 @@ void sgwc_s11_handle_downlink_data_notification_ack(
sgwc_ue = sess->sgwc_ue; sgwc_ue = sess->sgwc_ue;
ogs_assert(sgwc_ue); ogs_assert(sgwc_ue);
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
rv = ogs_gtp_xact_commit(s11_xact); rv = ogs_gtp_xact_commit(s11_xact);
ogs_expect(rv == OGS_OK); ogs_expect(rv == OGS_OK);
if (ack->cause.presence) { if (ack->cause.presence) {
ogs_gtp_cause_t *cause = ack->cause.data; ogs_gtp2_cause_t *cause = ack->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED)
ogs_warn("GTP Failed [CAUSE:%d] - PFCP_CAUSE[%d]", ogs_warn("GTP Failed [CAUSE:%d] - PFCP_CAUSE[%d]",
cause_value, pfcp_cause_from_gtp(cause_value)); cause_value, pfcp_cause_from_gtp(cause_value));
} else { } else {
@ -978,7 +978,7 @@ void sgwc_s11_handle_downlink_data_notification_ack(
void sgwc_s11_handle_create_indirect_data_forwarding_tunnel_request( void sgwc_s11_handle_create_indirect_data_forwarding_tunnel_request(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv, i; int rv, i;
@ -986,10 +986,10 @@ void sgwc_s11_handle_create_indirect_data_forwarding_tunnel_request(
sgwc_bearer_t *bearer = NULL; sgwc_bearer_t *bearer = NULL;
sgwc_tunnel_t *tunnel = NULL; sgwc_tunnel_t *tunnel = NULL;
ogs_pfcp_far_t *far = NULL; ogs_pfcp_far_t *far = NULL;
ogs_gtp_create_indirect_data_forwarding_tunnel_request_t *req = NULL; ogs_gtp2_create_indirect_data_forwarding_tunnel_request_t *req = NULL;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_gtp_f_teid_t *req_teid = NULL; ogs_gtp2_f_teid_t *req_teid = NULL;
ogs_assert(s11_xact); ogs_assert(s11_xact);
ogs_assert(message); ogs_assert(message);
@ -999,17 +999,17 @@ void sgwc_s11_handle_create_indirect_data_forwarding_tunnel_request(
ogs_debug("Create Indirect Data Forwarding Tunnel Request"); ogs_debug("Create Indirect Data Forwarding Tunnel Request");
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (!sgwc_ue) { if (!sgwc_ue) {
ogs_warn("No Context"); ogs_warn("No Context");
cause.value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause.value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause.value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause.value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE, OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE,
cause.value); cause.value);
return; return;
} }
@ -1022,12 +1022,12 @@ void sgwc_s11_handle_create_indirect_data_forwarding_tunnel_request(
ogs_error("No EBI"); ogs_error("No EBI");
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE, OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE,
OGS_GTP_CAUSE_MANDATORY_IE_MISSING); OGS_GTP2_CAUSE_MANDATORY_IE_MISSING);
return; return;
} }
bearer = sgwc_bearer_find_by_ue_ebi(sgwc_ue, bearer = sgwc_bearer_find_by_ue_ebi(sgwc_ue,
req->bearer_contexts[i].eps_bearer_id.u8); req->bearer_contexts[i].eps_bearer_id.u8);
ogs_assert(bearer); ogs_assert(bearer);
@ -1036,17 +1036,17 @@ void sgwc_s11_handle_create_indirect_data_forwarding_tunnel_request(
ogs_assert(req_teid); ogs_assert(req_teid);
tunnel = sgwc_tunnel_add(bearer, tunnel = sgwc_tunnel_add(bearer,
OGS_GTP_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING); OGS_GTP2_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING);
ogs_assert(tunnel); ogs_assert(tunnel);
tunnel->remote_teid = be32toh(req_teid->teid); tunnel->remote_teid = be32toh(req_teid->teid);
rv = ogs_gtp_f_teid_to_ip(req_teid, &tunnel->remote_ip); rv = ogs_gtp2_f_teid_to_ip(req_teid, &tunnel->remote_ip);
if (rv != OGS_OK) { if (rv != OGS_OK) {
ogs_gtp_send_error_message(s11_xact, ogs_gtp_send_error_message(s11_xact,
sgwc_ue ? sgwc_ue->mme_s11_teid : 0, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE, OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE,
OGS_GTP_CAUSE_MANDATORY_IE_MISSING); OGS_GTP2_CAUSE_MANDATORY_IE_MISSING);
return; return;
} }
@ -1071,17 +1071,17 @@ void sgwc_s11_handle_create_indirect_data_forwarding_tunnel_request(
ogs_assert(req_teid); ogs_assert(req_teid);
tunnel = sgwc_tunnel_add(bearer, tunnel = sgwc_tunnel_add(bearer,
OGS_GTP_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING); OGS_GTP2_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING);
ogs_assert(tunnel); ogs_assert(tunnel);
tunnel->remote_teid = be32toh(req_teid->teid); tunnel->remote_teid = be32toh(req_teid->teid);
rv = ogs_gtp_f_teid_to_ip(req_teid, &tunnel->remote_ip); rv = ogs_gtp2_f_teid_to_ip(req_teid, &tunnel->remote_ip);
if (rv != OGS_OK) { if (rv != OGS_OK) {
ogs_gtp_send_error_message(s11_xact, ogs_gtp_send_error_message(s11_xact,
sgwc_ue ? sgwc_ue->mme_s11_teid : 0, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE, OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE,
OGS_GTP_CAUSE_MANDATORY_IE_MISSING); OGS_GTP2_CAUSE_MANDATORY_IE_MISSING);
return; return;
} }
@ -1114,28 +1114,28 @@ void sgwc_s11_handle_create_indirect_data_forwarding_tunnel_request(
void sgwc_s11_handle_delete_indirect_data_forwarding_tunnel_request( void sgwc_s11_handle_delete_indirect_data_forwarding_tunnel_request(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *recv_message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *recv_message)
{ {
sgwc_sess_t *sess = NULL; sgwc_sess_t *sess = NULL;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_assert(s11_xact); ogs_assert(s11_xact);
ogs_debug("Delete Indirect Data Forwarding Tunnel Request"); ogs_debug("Delete Indirect Data Forwarding Tunnel Request");
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (!sgwc_ue) { if (!sgwc_ue) {
ogs_warn("No Context"); ogs_warn("No Context");
cause.value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause.value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause.value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause.value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE, OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE,
cause.value); cause.value);
return; return;
} }
@ -1157,11 +1157,11 @@ void sgwc_s11_handle_delete_indirect_data_forwarding_tunnel_request(
void sgwc_s11_handle_bearer_resource_command( void sgwc_s11_handle_bearer_resource_command(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv; int rv;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_bearer_resource_command_t *cmd = NULL; ogs_gtp2_bearer_resource_command_t *cmd = NULL;
uint8_t cause_value = 0; uint8_t cause_value = 0;
ogs_gtp_xact_t *s5c_xact = NULL; ogs_gtp_xact_t *s5c_xact = NULL;
@ -1175,27 +1175,27 @@ void sgwc_s11_handle_bearer_resource_command(
ogs_debug("Bearer Resource Command"); ogs_debug("Bearer Resource Command");
cmd = &message->bearer_resource_command; cmd = &message->bearer_resource_command;
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (cmd->procedure_transaction_id.presence == 0) { if (cmd->procedure_transaction_id.presence == 0) {
ogs_error("No PTI"); ogs_error("No PTI");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cmd->traffic_aggregate_description.presence == 0) { if (cmd->traffic_aggregate_description.presence == 0) {
ogs_error("No Traffic aggregate description(TAD)"); ogs_error("No Traffic aggregate description(TAD)");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cmd->linked_eps_bearer_id.presence == 0) { if (cmd->linked_eps_bearer_id.presence == 0) {
ogs_error("No Linked EPS Bearer ID"); ogs_error("No Linked EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (!sgwc_ue) { if (!sgwc_ue) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
uint8_t ebi = cmd->linked_eps_bearer_id.u8; uint8_t ebi = cmd->linked_eps_bearer_id.u8;
if (cmd->eps_bearer_id.presence) if (cmd->eps_bearer_id.presence)
@ -1209,13 +1209,13 @@ void sgwc_s11_handle_bearer_resource_command(
if (!bearer) { if (!bearer) {
ogs_error("No context"); ogs_error("No context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, cause_value); OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, cause_value);
return; return;
} }
@ -1228,10 +1228,10 @@ void sgwc_s11_handle_bearer_resource_command(
ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]", ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]",
sess->sgw_s5c_teid, sess->pgw_s5c_teid); sess->sgw_s5c_teid, sess->pgw_s5c_teid);
message->h.type = OGS_GTP_BEARER_RESOURCE_COMMAND_TYPE; message->h.type = OGS_GTP2_BEARER_RESOURCE_COMMAND_TYPE;
message->h.teid = sess->pgw_s5c_teid; message->h.teid = sess->pgw_s5c_teid;
pkbuf = ogs_gtp_build_msg(message); pkbuf = ogs_gtp2_build_msg(message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
s5c_xact = ogs_gtp_xact_local_create( s5c_xact = ogs_gtp_xact_local_create(

View File

@ -28,40 +28,40 @@ extern "C" {
void sgwc_s11_handle_create_session_request( void sgwc_s11_handle_create_session_request(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s11_handle_modify_bearer_request( void sgwc_s11_handle_modify_bearer_request(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s11_handle_delete_session_request( void sgwc_s11_handle_delete_session_request(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s11_handle_create_bearer_response( void sgwc_s11_handle_create_bearer_response(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s11_handle_update_bearer_response( void sgwc_s11_handle_update_bearer_response(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s11_handle_delete_bearer_response( void sgwc_s11_handle_delete_bearer_response(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s11_handle_release_access_bearers_request( void sgwc_s11_handle_release_access_bearers_request(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s11_handle_downlink_data_notification_ack( void sgwc_s11_handle_downlink_data_notification_ack(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s11_handle_create_indirect_data_forwarding_tunnel_request( void sgwc_s11_handle_create_indirect_data_forwarding_tunnel_request(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s11_handle_delete_indirect_data_forwarding_tunnel_request( void sgwc_s11_handle_delete_indirect_data_forwarding_tunnel_request(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s11_handle_bearer_resource_command( void sgwc_s11_handle_bearer_resource_command(
sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -39,10 +39,10 @@ static void bearer_timeout(ogs_gtp_xact_t *xact, void *data)
type = xact->seq[0].type; type = xact->seq[0].type;
switch (type) { switch (type) {
case OGS_GTP_UPDATE_BEARER_REQUEST_TYPE: case OGS_GTP2_UPDATE_BEARER_REQUEST_TYPE:
ogs_error("[%s] No Update Bearer Response", sgwc_ue->imsi_bcd); ogs_error("[%s] No Update Bearer Response", sgwc_ue->imsi_bcd);
break; break;
case OGS_GTP_DELETE_BEARER_REQUEST_TYPE: case OGS_GTP2_DELETE_BEARER_REQUEST_TYPE:
ogs_error("[%s] No Delete Bearer Response", sgwc_ue->imsi_bcd); ogs_error("[%s] No Delete Bearer Response", sgwc_ue->imsi_bcd);
if (!sgwc_bearer_cycle(bearer)) { if (!sgwc_bearer_cycle(bearer)) {
ogs_warn("[%s] Bearer has already been removed", sgwc_ue->imsi_bcd); ogs_warn("[%s] Bearer has already been removed", sgwc_ue->imsi_bcd);
@ -60,11 +60,11 @@ static void bearer_timeout(ogs_gtp_xact_t *xact, void *data)
void sgwc_s5c_handle_create_session_response( void sgwc_s5c_handle_create_session_response(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv; int rv;
ogs_gtp_cause_t *cause = NULL; ogs_gtp2_cause_t *cause = NULL;
ogs_gtp_cause_t *bearer_cause = NULL; ogs_gtp2_cause_t *bearer_cause = NULL;
uint8_t cause_value; uint8_t cause_value;
sgwc_ue_t *sgwc_ue = NULL; sgwc_ue_t *sgwc_ue = NULL;
@ -72,10 +72,10 @@ void sgwc_s5c_handle_create_session_response(
sgwc_tunnel_t *ul_tunnel = NULL; sgwc_tunnel_t *ul_tunnel = NULL;
ogs_pfcp_far_t *far = NULL; ogs_pfcp_far_t *far = NULL;
ogs_gtp_f_teid_t *pgw_s5c_teid = NULL; ogs_gtp2_f_teid_t *pgw_s5c_teid = NULL;
ogs_gtp_f_teid_t *pgw_s5u_teid = NULL; ogs_gtp2_f_teid_t *pgw_s5u_teid = NULL;
ogs_gtp_create_session_response_t *rsp = NULL; ogs_gtp2_create_session_response_t *rsp = NULL;
ogs_gtp_xact_t *s11_xact = NULL; ogs_gtp_xact_t *s11_xact = NULL;
ogs_assert(s5c_xact); ogs_assert(s5c_xact);
@ -91,28 +91,28 @@ void sgwc_s5c_handle_create_session_response(
/*************************** /***************************
* Check Session Context * Check Session Context
***************************/ ***************************/
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (!sess) { if (!sess) {
ogs_warn("No Context in TEID"); ogs_warn("No Context in TEID");
sess = s5c_xact->data; sess = s5c_xact->data;
ogs_assert(sess); ogs_assert(sess);
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} else { } else {
sgwc_ue = sess->sgwc_ue; sgwc_ue = sess->sgwc_ue;
ogs_assert(sgwc_ue); ogs_assert(sgwc_ue);
if (rsp->bearer_contexts_created.eps_bearer_id.presence == 0) { if (rsp->bearer_contexts_created.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} else { } else {
bearer = sgwc_bearer_find_by_sess_ebi(sess, bearer = sgwc_bearer_find_by_sess_ebi(sess,
rsp->bearer_contexts_created.eps_bearer_id.u8); rsp->bearer_contexts_created.eps_bearer_id.u8);
if (!bearer) { if (!bearer) {
ogs_error("No Context for EPS Bearer ID[%d]", ogs_error("No Context for EPS Bearer ID[%d]",
rsp->bearer_contexts_created.eps_bearer_id.u8); rsp->bearer_contexts_created.eps_bearer_id.u8);
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
} }
} }
@ -120,25 +120,25 @@ void sgwc_s5c_handle_create_session_response(
rv = ogs_gtp_xact_commit(s5c_xact); rv = ogs_gtp_xact_commit(s5c_xact);
ogs_expect(rv == OGS_OK); ogs_expect(rv == OGS_OK);
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
return; return;
} }
/*************************** /***************************
* Check Manatory IE Missing * Check Manatory IE Missing
***************************/ ***************************/
ogs_assert(cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED); ogs_assert(cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED);
if (rsp->bearer_contexts_created.cause.presence == 0) { if (rsp->bearer_contexts_created.cause.presence == 0) {
ogs_error("No EPS Bearer Cause"); ogs_error("No EPS Bearer Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts_created.presence == 0) { if (rsp->bearer_contexts_created.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts_created.eps_bearer_id.presence == 0) { if (rsp->bearer_contexts_created.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
@ -147,21 +147,21 @@ void sgwc_s5c_handle_create_session_response(
if (rsp->pgw_s5_s8__s2a_s2b_f_teid_for_pmip_based_interface_or_for_gtp_based_control_plane_interface.presence == 0) { if (rsp->pgw_s5_s8__s2a_s2b_f_teid_for_pmip_based_interface_or_for_gtp_based_control_plane_interface.presence == 0) {
ogs_error("No GTP TEID"); ogs_error("No GTP TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts_created.s5_s8_u_sgw_f_teid.presence == 0) { if (rsp->bearer_contexts_created.s5_s8_u_sgw_f_teid.presence == 0) {
ogs_error("No GTP TEID"); ogs_error("No GTP TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->cause.presence == 0) { if (rsp->cause.presence == 0) {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts_created.cause.presence == 0) { if (rsp->bearer_contexts_created.cause.presence == 0) {
ogs_error("No Bearer Cause"); ogs_error("No Bearer Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->pdn_address_allocation.presence) { if (rsp->pdn_address_allocation.presence) {
@ -177,50 +177,50 @@ void sgwc_s5c_handle_create_session_response(
/* Nothing */ /* Nothing */
} else { } else {
ogs_error("Unknown PDN Type %u", paa.session_type); ogs_error("Unknown PDN Type %u", paa.session_type);
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
} else { } else {
ogs_error("No PDN Address Allocation"); ogs_error("No PDN Address Allocation");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
return; return;
} }
/*************************** /***************************
* Check Cause Value * Check Cause Value
***************************/ ***************************/
ogs_assert(cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED); ogs_assert(cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED);
bearer_cause = rsp->bearer_contexts_created.cause.data; bearer_cause = rsp->bearer_contexts_created.cause.data;
ogs_assert(bearer_cause); ogs_assert(bearer_cause);
cause_value = bearer_cause->value; cause_value = bearer_cause->value;
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_error("GTP Failed [Bearer-CAUSE:%d]", cause_value); ogs_error("GTP Failed [Bearer-CAUSE:%d]", cause_value);
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
return; return;
} }
cause = rsp->cause.data; cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED && if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED &&
cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED_PARTIALLY && cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED_PARTIALLY &&
cause_value != cause_value !=
OGS_GTP_CAUSE_NEW_PDN_TYPE_DUE_TO_NETWORK_PREFERENCE && OGS_GTP2_CAUSE_NEW_PDN_TYPE_DUE_TO_NETWORK_PREFERENCE &&
cause_value != cause_value !=
OGS_GTP_CAUSE_NEW_PDN_TYPE_DUE_TO_SINGLE_ADDRESS_BEARER_ONLY) { OGS_GTP2_CAUSE_NEW_PDN_TYPE_DUE_TO_SINGLE_ADDRESS_BEARER_ONLY) {
ogs_error("GTP Failed [CAUSE:%d]", cause_value); ogs_error("GTP Failed [CAUSE:%d]", cause_value);
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -233,12 +233,12 @@ void sgwc_s5c_handle_create_session_response(
ogs_assert(pgw_s5u_teid); ogs_assert(pgw_s5u_teid);
ul_tunnel->remote_teid = be32toh(pgw_s5u_teid->teid); ul_tunnel->remote_teid = be32toh(pgw_s5u_teid->teid);
rv = ogs_gtp_f_teid_to_ip(pgw_s5u_teid, &ul_tunnel->remote_ip); rv = ogs_gtp2_f_teid_to_ip(pgw_s5u_teid, &ul_tunnel->remote_ip);
if (rv != OGS_OK) { if (rv != OGS_OK) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE,
OGS_GTP_CAUSE_MANDATORY_IE_MISSING); OGS_GTP2_CAUSE_MANDATORY_IE_MISSING);
return; return;
} }
@ -272,7 +272,7 @@ void sgwc_s5c_handle_create_session_response(
void sgwc_s5c_handle_delete_session_response( void sgwc_s5c_handle_delete_session_response(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv; int rv;
uint8_t cause_value; uint8_t cause_value;
@ -280,7 +280,7 @@ void sgwc_s5c_handle_delete_session_response(
sgwc_ue_t *sgwc_ue = NULL; sgwc_ue_t *sgwc_ue = NULL;
ogs_gtp_xact_t *s11_xact = NULL; ogs_gtp_xact_t *s11_xact = NULL;
ogs_gtp_delete_session_response_t *rsp = NULL; ogs_gtp2_delete_session_response_t *rsp = NULL;
ogs_assert(s5c_xact); ogs_assert(s5c_xact);
s11_xact = s5c_xact->assoc_xact; s11_xact = s5c_xact->assoc_xact;
@ -291,7 +291,7 @@ void sgwc_s5c_handle_delete_session_response(
ogs_debug("Delete Session Response"); ogs_debug("Delete Session Response");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (!sess) { if (!sess) {
ogs_warn("No Context in TEID"); ogs_warn("No Context in TEID");
@ -306,16 +306,16 @@ void sgwc_s5c_handle_delete_session_response(
ogs_assert(sgwc_ue); ogs_assert(sgwc_ue);
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_warn("GTP Failed [CAUSE:%d]", cause_value); ogs_warn("GTP Failed [CAUSE:%d]", cause_value);
} }
@ -335,7 +335,7 @@ void sgwc_s5c_handle_delete_session_response(
void sgwc_s5c_handle_modify_bearer_response( void sgwc_s5c_handle_modify_bearer_response(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv; int rv;
uint8_t cause_value; uint8_t cause_value;
@ -344,7 +344,7 @@ void sgwc_s5c_handle_modify_bearer_response(
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_xact_t *s11_xact = NULL; ogs_gtp_xact_t *s11_xact = NULL;
ogs_gtp_modify_bearer_response_t *rsp = NULL; ogs_gtp2_modify_bearer_response_t *rsp = NULL;
ogs_assert(s5c_xact); ogs_assert(s5c_xact);
s11_xact = s5c_xact->assoc_xact; s11_xact = s5c_xact->assoc_xact;
@ -355,7 +355,7 @@ void sgwc_s5c_handle_modify_bearer_response(
ogs_debug("Modify Bearer Response"); ogs_debug("Modify Bearer Response");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (!sess) { if (!sess) {
ogs_warn("No Context in TEID"); ogs_warn("No Context in TEID");
@ -370,19 +370,19 @@ void sgwc_s5c_handle_modify_bearer_response(
ogs_assert(sgwc_ue); ogs_assert(sgwc_ue);
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE, cause_value); OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -391,10 +391,10 @@ void sgwc_s5c_handle_modify_bearer_response(
ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]", ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]",
sess->sgw_s5c_teid, sess->pgw_s5c_teid); sess->sgw_s5c_teid, sess->pgw_s5c_teid);
message->h.type = OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE; message->h.type = OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE;
message->h.teid = sgwc_ue->mme_s11_teid; message->h.teid = sgwc_ue->mme_s11_teid;
pkbuf = ogs_gtp_build_msg(message); pkbuf = ogs_gtp2_build_msg(message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
rv = ogs_gtp_xact_update_tx(s11_xact, &message->h, pkbuf); rv = ogs_gtp_xact_update_tx(s11_xact, &message->h, pkbuf);
@ -406,7 +406,7 @@ void sgwc_s5c_handle_modify_bearer_response(
void sgwc_s5c_handle_create_bearer_request( void sgwc_s5c_handle_create_bearer_request(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
@ -416,8 +416,8 @@ void sgwc_s5c_handle_create_bearer_request(
sgwc_tunnel_t *ul_tunnel = NULL; sgwc_tunnel_t *ul_tunnel = NULL;
ogs_pfcp_far_t *far = NULL; ogs_pfcp_far_t *far = NULL;
ogs_gtp_create_bearer_request_t *req = NULL; ogs_gtp2_create_bearer_request_t *req = NULL;
ogs_gtp_f_teid_t *pgw_s5u_teid = NULL; ogs_gtp2_f_teid_t *pgw_s5u_teid = NULL;
ogs_assert(s5c_xact); ogs_assert(s5c_xact);
ogs_assert(message); ogs_assert(message);
@ -426,33 +426,33 @@ void sgwc_s5c_handle_create_bearer_request(
ogs_debug("Create Bearer Request"); ogs_debug("Create Bearer Request");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (req->linked_eps_bearer_id.presence == 0) { if (req->linked_eps_bearer_id.presence == 0) {
ogs_error("No Linked EBI"); ogs_error("No Linked EBI");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts.presence == 0) { if (req->bearer_contexts.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts.eps_bearer_id.presence == 0) { if (req->bearer_contexts.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts.s4_u_sgsn_f_teid.presence == 0) { if (req->bearer_contexts.s4_u_sgsn_f_teid.presence == 0) {
ogs_error("No GTP TEID"); ogs_error("No GTP TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (!sess) { if (!sess) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0, ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
OGS_GTP_CREATE_BEARER_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -476,11 +476,11 @@ void sgwc_s5c_handle_create_bearer_request(
ogs_debug(" SGW_S5U_TEID[%d] PGW_S5U_TEID[%d]", ogs_debug(" SGW_S5U_TEID[%d] PGW_S5U_TEID[%d]",
ul_tunnel->local_teid, ul_tunnel->remote_teid); ul_tunnel->local_teid, ul_tunnel->remote_teid);
rv = ogs_gtp_f_teid_to_ip(pgw_s5u_teid, &ul_tunnel->remote_ip); rv = ogs_gtp2_f_teid_to_ip(pgw_s5u_teid, &ul_tunnel->remote_ip);
if (rv != OGS_OK) { if (rv != OGS_OK) {
ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0, ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
OGS_GTP_CREATE_BEARER_RESPONSE_TYPE, OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE,
OGS_GTP_CAUSE_MANDATORY_IE_MISSING); OGS_GTP2_CAUSE_MANDATORY_IE_MISSING);
return; return;
} }
@ -502,12 +502,12 @@ void sgwc_s5c_handle_create_bearer_request(
void sgwc_s5c_handle_update_bearer_request( void sgwc_s5c_handle_update_bearer_request(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
ogs_gtp_xact_t *s11_xact = NULL; ogs_gtp_xact_t *s11_xact = NULL;
ogs_gtp_update_bearer_request_t *req = NULL; ogs_gtp2_update_bearer_request_t *req = NULL;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
sgwc_ue_t *sgwc_ue = NULL; sgwc_ue_t *sgwc_ue = NULL;
sgwc_bearer_t *bearer = NULL; sgwc_bearer_t *bearer = NULL;
@ -519,23 +519,23 @@ void sgwc_s5c_handle_update_bearer_request(
ogs_debug("Update Bearer Request"); ogs_debug("Update Bearer Request");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (req->bearer_contexts.presence == 0) { if (req->bearer_contexts.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts.eps_bearer_id.presence == 0) { if (req->bearer_contexts.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (!sess) { if (!sess) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
bearer = sgwc_bearer_find_by_sess_ebi( bearer = sgwc_bearer_find_by_sess_ebi(
sess, req->bearer_contexts.eps_bearer_id.u8); sess, req->bearer_contexts.eps_bearer_id.u8);
if (!bearer) if (!bearer)
@ -544,12 +544,12 @@ void sgwc_s5c_handle_update_bearer_request(
} }
if (!bearer) { if (!bearer) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0, ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
OGS_GTP_UPDATE_BEARER_RESPONSE_TYPE, cause_value); OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -565,10 +565,10 @@ void sgwc_s5c_handle_update_bearer_request(
ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]", ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]",
sess->sgw_s5c_teid, sess->pgw_s5c_teid); sess->sgw_s5c_teid, sess->pgw_s5c_teid);
message->h.type = OGS_GTP_UPDATE_BEARER_REQUEST_TYPE; message->h.type = OGS_GTP2_UPDATE_BEARER_REQUEST_TYPE;
message->h.teid = sgwc_ue->mme_s11_teid; message->h.teid = sgwc_ue->mme_s11_teid;
pkbuf = ogs_gtp_build_msg(message); pkbuf = ogs_gtp2_build_msg(message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
s11_xact = s5c_xact->assoc_xact; s11_xact = s5c_xact->assoc_xact;
@ -591,12 +591,12 @@ void sgwc_s5c_handle_update_bearer_request(
void sgwc_s5c_handle_delete_bearer_request( void sgwc_s5c_handle_delete_bearer_request(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
ogs_gtp_xact_t *s11_xact = NULL; ogs_gtp_xact_t *s11_xact = NULL;
ogs_gtp_delete_bearer_request_t *req = NULL; ogs_gtp2_delete_bearer_request_t *req = NULL;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
sgwc_ue_t *sgwc_ue = NULL; sgwc_ue_t *sgwc_ue = NULL;
sgwc_bearer_t *bearer = NULL; sgwc_bearer_t *bearer = NULL;
@ -608,20 +608,20 @@ void sgwc_s5c_handle_delete_bearer_request(
ogs_debug("Delete Bearer Request"); ogs_debug("Delete Bearer Request");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (req->linked_eps_bearer_id.presence == 0 && if (req->linked_eps_bearer_id.presence == 0 &&
req->eps_bearer_ids.presence == 0) { req->eps_bearer_ids.presence == 0) {
ogs_error("No Linked EBI or EPS Bearer ID"); ogs_error("No Linked EBI or EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (!sess) { if (!sess) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
uint8_t ebi; uint8_t ebi;
if (req->linked_eps_bearer_id.presence) { if (req->linked_eps_bearer_id.presence) {
@ -660,12 +660,12 @@ void sgwc_s5c_handle_delete_bearer_request(
} }
if (!bearer) { if (!bearer) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0, ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
OGS_GTP_DELETE_BEARER_RESPONSE_TYPE, cause_value); OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -681,10 +681,10 @@ void sgwc_s5c_handle_delete_bearer_request(
ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]", ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]",
sess->sgw_s5c_teid, sess->pgw_s5c_teid); sess->sgw_s5c_teid, sess->pgw_s5c_teid);
message->h.type = OGS_GTP_DELETE_BEARER_REQUEST_TYPE; message->h.type = OGS_GTP2_DELETE_BEARER_REQUEST_TYPE;
message->h.teid = sgwc_ue->mme_s11_teid; message->h.teid = sgwc_ue->mme_s11_teid;
pkbuf = ogs_gtp_build_msg(message); pkbuf = ogs_gtp2_build_msg(message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
s11_xact = s5c_xact->assoc_xact; s11_xact = s5c_xact->assoc_xact;
@ -724,11 +724,11 @@ void sgwc_s5c_handle_delete_bearer_request(
void sgwc_s5c_handle_bearer_resource_failure_indication( void sgwc_s5c_handle_bearer_resource_failure_indication(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message) ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
{ {
uint8_t cause_value = 0; uint8_t cause_value = 0;
ogs_gtp_xact_t *s11_xact = NULL; ogs_gtp_xact_t *s11_xact = NULL;
ogs_gtp_bearer_resource_failure_indication_t *ind = NULL; ogs_gtp2_bearer_resource_failure_indication_t *ind = NULL;
sgwc_ue_t *sgwc_ue = NULL; sgwc_ue_t *sgwc_ue = NULL;
@ -743,22 +743,22 @@ void sgwc_s5c_handle_bearer_resource_failure_indication(
if (!sess) { if (!sess) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} else { } else {
sgwc_ue = sess->sgwc_ue; sgwc_ue = sess->sgwc_ue;
ogs_assert(sgwc_ue); ogs_assert(sgwc_ue);
} }
if (ind->cause.presence) { if (ind->cause.presence) {
ogs_gtp_cause_t *cause = ind->cause.data; ogs_gtp2_cause_t *cause = ind->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
ogs_gtp_send_error_message(s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, ogs_gtp_send_error_message(s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, cause_value); OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, cause_value);
} }

View File

@ -28,25 +28,25 @@ extern "C" {
void sgwc_s5c_handle_create_session_response( void sgwc_s5c_handle_create_session_response(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s5c_handle_delete_session_response( void sgwc_s5c_handle_delete_session_response(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s5c_handle_modify_bearer_response( void sgwc_s5c_handle_modify_bearer_response(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s5c_handle_create_bearer_request( void sgwc_s5c_handle_create_bearer_request(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s5c_handle_update_bearer_request( void sgwc_s5c_handle_update_bearer_request(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s5c_handle_delete_bearer_request( void sgwc_s5c_handle_delete_bearer_request(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
void sgwc_s5c_handle_bearer_resource_failure_indication( void sgwc_s5c_handle_bearer_resource_failure_indication(
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact, sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
ogs_pkbuf_t *gtpbuf, ogs_gtp_message_t *message); ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -24,7 +24,7 @@
#include "pfcp-path.h" #include "pfcp-path.h"
static void sgwc_handle_echo_request( static void sgwc_handle_echo_request(
ogs_gtp_xact_t *xact, ogs_gtp_echo_request_t *req) ogs_gtp_xact_t *xact, ogs_gtp2_echo_request_t *req)
{ {
ogs_assert(xact); ogs_assert(xact);
ogs_assert(req); ogs_assert(req);
@ -32,11 +32,11 @@ static void sgwc_handle_echo_request(
ogs_debug("[SGW] Receiving Echo Request"); ogs_debug("[SGW] Receiving Echo Request");
/* FIXME : Before implementing recovery counter correctly, /* FIXME : Before implementing recovery counter correctly,
* I'll re-use the recovery value in request message */ * I'll re-use the recovery value in request message */
ogs_gtp_send_echo_response(xact, req->recovery.u8, 0); ogs_gtp2_send_echo_response(xact, req->recovery.u8, 0);
} }
static void sgwc_handle_echo_response( static void sgwc_handle_echo_response(
ogs_gtp_xact_t *s11_xact, ogs_gtp_echo_response_t *rsp) ogs_gtp_xact_t *s11_xact, ogs_gtp2_echo_response_t *rsp)
{ {
/* Not Implemented */ /* Not Implemented */
} }
@ -67,7 +67,7 @@ void sgwc_state_operational(ogs_fsm_t *s, sgwc_event_t *e)
sgwc_sess_t *sess = NULL; sgwc_sess_t *sess = NULL;
ogs_gtp_xact_t *gtp_xact = NULL; ogs_gtp_xact_t *gtp_xact = NULL;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_node_t *gnode = NULL; ogs_gtp_node_t *gnode = NULL;
ogs_pfcp_node_t *pfcp_node = NULL; ogs_pfcp_node_t *pfcp_node = NULL;
@ -110,7 +110,7 @@ void sgwc_state_operational(ogs_fsm_t *s, sgwc_event_t *e)
e->gtp_message = NULL; e->gtp_message = NULL;
if (pfcp_xact->gtpbuf) { if (pfcp_xact->gtpbuf) {
rv = ogs_gtp_parse_msg(&gtp_message, pfcp_xact->gtpbuf); rv = ogs_gtp2_parse_msg(&gtp_message, pfcp_xact->gtpbuf);
e->gtp_message = &gtp_message; e->gtp_message = &gtp_message;
} }
@ -139,8 +139,8 @@ void sgwc_state_operational(ogs_fsm_t *s, sgwc_event_t *e)
recvbuf = e->pkbuf; recvbuf = e->pkbuf;
ogs_assert(recvbuf); ogs_assert(recvbuf);
if (ogs_gtp_parse_msg(&gtp_message, recvbuf) != OGS_OK) { if (ogs_gtp2_parse_msg(&gtp_message, recvbuf) != OGS_OK) {
ogs_error("ogs_gtp_parse_msg() failed"); ogs_error("ogs_gtp2_parse_msg() failed");
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
break; break;
} }
@ -165,13 +165,13 @@ void sgwc_state_operational(ogs_fsm_t *s, sgwc_event_t *e)
} }
switch(gtp_message.h.type) { switch(gtp_message.h.type) {
case OGS_GTP_ECHO_REQUEST_TYPE: case OGS_GTP2_ECHO_REQUEST_TYPE:
sgwc_handle_echo_request(gtp_xact, &gtp_message.echo_request); sgwc_handle_echo_request(gtp_xact, &gtp_message.echo_request);
break; break;
case OGS_GTP_ECHO_RESPONSE_TYPE: case OGS_GTP2_ECHO_RESPONSE_TYPE:
sgwc_handle_echo_response(gtp_xact, &gtp_message.echo_response); sgwc_handle_echo_response(gtp_xact, &gtp_message.echo_response);
break; break;
case OGS_GTP_CREATE_SESSION_REQUEST_TYPE: case OGS_GTP2_CREATE_SESSION_REQUEST_TYPE:
if (gtp_message.h.teid == 0) { if (gtp_message.h.teid == 0) {
ogs_expect(!sgwc_ue); ogs_expect(!sgwc_ue);
sgwc_ue = sgwc_ue_add_by_message(&gtp_message); sgwc_ue = sgwc_ue_add_by_message(&gtp_message);
@ -181,43 +181,43 @@ void sgwc_state_operational(ogs_fsm_t *s, sgwc_event_t *e)
sgwc_s11_handle_create_session_request( sgwc_s11_handle_create_session_request(
sgwc_ue, gtp_xact, recvbuf, &gtp_message); sgwc_ue, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_MODIFY_BEARER_REQUEST_TYPE: case OGS_GTP2_MODIFY_BEARER_REQUEST_TYPE:
sgwc_s11_handle_modify_bearer_request( sgwc_s11_handle_modify_bearer_request(
sgwc_ue, gtp_xact, recvbuf, &gtp_message); sgwc_ue, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_DELETE_SESSION_REQUEST_TYPE: case OGS_GTP2_DELETE_SESSION_REQUEST_TYPE:
sgwc_s11_handle_delete_session_request( sgwc_s11_handle_delete_session_request(
sgwc_ue, gtp_xact, recvbuf, &gtp_message); sgwc_ue, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_CREATE_BEARER_RESPONSE_TYPE: case OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE:
sgwc_s11_handle_create_bearer_response( sgwc_s11_handle_create_bearer_response(
sgwc_ue, gtp_xact, recvbuf, &gtp_message); sgwc_ue, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_UPDATE_BEARER_RESPONSE_TYPE: case OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE:
sgwc_s11_handle_update_bearer_response( sgwc_s11_handle_update_bearer_response(
sgwc_ue, gtp_xact, recvbuf, &gtp_message); sgwc_ue, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_DELETE_BEARER_RESPONSE_TYPE: case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE:
sgwc_s11_handle_delete_bearer_response( sgwc_s11_handle_delete_bearer_response(
sgwc_ue, gtp_xact, recvbuf, &gtp_message); sgwc_ue, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_RELEASE_ACCESS_BEARERS_REQUEST_TYPE: case OGS_GTP2_RELEASE_ACCESS_BEARERS_REQUEST_TYPE:
sgwc_s11_handle_release_access_bearers_request( sgwc_s11_handle_release_access_bearers_request(
sgwc_ue, gtp_xact, recvbuf, &gtp_message); sgwc_ue, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE: case OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE:
sgwc_s11_handle_downlink_data_notification_ack( sgwc_s11_handle_downlink_data_notification_ack(
sgwc_ue, gtp_xact, recvbuf, &gtp_message); sgwc_ue, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE: case OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE:
sgwc_s11_handle_create_indirect_data_forwarding_tunnel_request( sgwc_s11_handle_create_indirect_data_forwarding_tunnel_request(
sgwc_ue, gtp_xact, recvbuf, &gtp_message); sgwc_ue, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE: case OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE:
sgwc_s11_handle_delete_indirect_data_forwarding_tunnel_request( sgwc_s11_handle_delete_indirect_data_forwarding_tunnel_request(
sgwc_ue, gtp_xact, recvbuf, &gtp_message); sgwc_ue, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_BEARER_RESOURCE_COMMAND_TYPE: case OGS_GTP2_BEARER_RESOURCE_COMMAND_TYPE:
sgwc_s11_handle_bearer_resource_command( sgwc_s11_handle_bearer_resource_command(
sgwc_ue, gtp_xact, recvbuf, &gtp_message); sgwc_ue, gtp_xact, recvbuf, &gtp_message);
break; break;
@ -233,8 +233,8 @@ void sgwc_state_operational(ogs_fsm_t *s, sgwc_event_t *e)
recvbuf = e->pkbuf; recvbuf = e->pkbuf;
ogs_assert(recvbuf); ogs_assert(recvbuf);
if (ogs_gtp_parse_msg(&gtp_message, recvbuf) != OGS_OK) { if (ogs_gtp2_parse_msg(&gtp_message, recvbuf) != OGS_OK) {
ogs_error("ogs_gtp_parse_msg() failed"); ogs_error("ogs_gtp2_parse_msg() failed");
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
break; break;
} }
@ -258,37 +258,37 @@ void sgwc_state_operational(ogs_fsm_t *s, sgwc_event_t *e)
} }
switch(gtp_message.h.type) { switch(gtp_message.h.type) {
case OGS_GTP_ECHO_REQUEST_TYPE: case OGS_GTP2_ECHO_REQUEST_TYPE:
sgwc_handle_echo_request(gtp_xact, &gtp_message.echo_request); sgwc_handle_echo_request(gtp_xact, &gtp_message.echo_request);
break; break;
case OGS_GTP_ECHO_RESPONSE_TYPE: case OGS_GTP2_ECHO_RESPONSE_TYPE:
sgwc_handle_echo_response(gtp_xact, &gtp_message.echo_response); sgwc_handle_echo_response(gtp_xact, &gtp_message.echo_response);
break; break;
case OGS_GTP_CREATE_SESSION_RESPONSE_TYPE: case OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE:
sgwc_s5c_handle_create_session_response( sgwc_s5c_handle_create_session_response(
sess, gtp_xact, recvbuf, &gtp_message); sess, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_DELETE_SESSION_RESPONSE_TYPE: case OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE:
sgwc_s5c_handle_delete_session_response( sgwc_s5c_handle_delete_session_response(
sess, gtp_xact, recvbuf, &gtp_message); sess, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE: case OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE:
sgwc_s5c_handle_modify_bearer_response( sgwc_s5c_handle_modify_bearer_response(
sess, gtp_xact, recvbuf, &gtp_message); sess, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_CREATE_BEARER_REQUEST_TYPE: case OGS_GTP2_CREATE_BEARER_REQUEST_TYPE:
sgwc_s5c_handle_create_bearer_request( sgwc_s5c_handle_create_bearer_request(
sess, gtp_xact, recvbuf, &gtp_message); sess, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_UPDATE_BEARER_REQUEST_TYPE: case OGS_GTP2_UPDATE_BEARER_REQUEST_TYPE:
sgwc_s5c_handle_update_bearer_request( sgwc_s5c_handle_update_bearer_request(
sess, gtp_xact, recvbuf, &gtp_message); sess, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_DELETE_BEARER_REQUEST_TYPE: case OGS_GTP2_DELETE_BEARER_REQUEST_TYPE:
sgwc_s5c_handle_delete_bearer_request( sgwc_s5c_handle_delete_bearer_request(
sess, gtp_xact, recvbuf, &gtp_message); sess, gtp_xact, recvbuf, &gtp_message);
break; break;
case OGS_GTP_BEARER_RESOURCE_FAILURE_INDICATION_TYPE: case OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE:
sgwc_s5c_handle_bearer_resource_failure_indication( sgwc_s5c_handle_bearer_resource_failure_indication(
sess, gtp_xact, recvbuf, &gtp_message); sess, gtp_xact, recvbuf, &gtp_message);
break; break;

View File

@ -141,16 +141,16 @@ ogs_pkbuf_t *sgwc_sxa_build_sess_modification_request(
OGS_PFCP_MODIFY_INDIRECT)) == 0) || OGS_PFCP_MODIFY_INDIRECT)) == 0) ||
((modify_flags & OGS_PFCP_MODIFY_DL_ONLY) && ((modify_flags & OGS_PFCP_MODIFY_DL_ONLY) &&
(tunnel->interface_type == OGS_GTP_F_TEID_S5_S8_SGW_GTP_U)) || (tunnel->interface_type == OGS_GTP2_F_TEID_S5_S8_SGW_GTP_U)) ||
((modify_flags & OGS_PFCP_MODIFY_UL_ONLY) && ((modify_flags & OGS_PFCP_MODIFY_UL_ONLY) &&
(tunnel->interface_type == OGS_GTP_F_TEID_S1_U_SGW_GTP_U)) || (tunnel->interface_type == OGS_GTP2_F_TEID_S1_U_SGW_GTP_U)) ||
(((modify_flags & OGS_PFCP_MODIFY_INDIRECT) && (((modify_flags & OGS_PFCP_MODIFY_INDIRECT) &&
((tunnel->interface_type == ((tunnel->interface_type ==
OGS_GTP_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING) || OGS_GTP2_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING) ||
(tunnel->interface_type == (tunnel->interface_type ==
OGS_GTP_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING))))) { OGS_GTP2_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING))))) {
if (modify_flags & OGS_PFCP_MODIFY_REMOVE) { if (modify_flags & OGS_PFCP_MODIFY_REMOVE) {
pdr = tunnel->pdr; pdr = tunnel->pdr;
@ -261,16 +261,16 @@ ogs_pkbuf_t *sgwc_sxa_build_bearer_modification_request(
OGS_PFCP_MODIFY_INDIRECT)) == 0) || OGS_PFCP_MODIFY_INDIRECT)) == 0) ||
((modify_flags & OGS_PFCP_MODIFY_DL_ONLY) && ((modify_flags & OGS_PFCP_MODIFY_DL_ONLY) &&
(tunnel->interface_type == OGS_GTP_F_TEID_S5_S8_SGW_GTP_U)) || (tunnel->interface_type == OGS_GTP2_F_TEID_S5_S8_SGW_GTP_U)) ||
((modify_flags & OGS_PFCP_MODIFY_UL_ONLY) && ((modify_flags & OGS_PFCP_MODIFY_UL_ONLY) &&
(tunnel->interface_type == OGS_GTP_F_TEID_S1_U_SGW_GTP_U)) || (tunnel->interface_type == OGS_GTP2_F_TEID_S1_U_SGW_GTP_U)) ||
(((modify_flags & OGS_PFCP_MODIFY_INDIRECT) && (((modify_flags & OGS_PFCP_MODIFY_INDIRECT) &&
((tunnel->interface_type == ((tunnel->interface_type ==
OGS_GTP_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING) || OGS_GTP2_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING) ||
(tunnel->interface_type == (tunnel->interface_type ==
OGS_GTP_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING))))) { OGS_GTP2_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING))))) {
if (modify_flags & OGS_PFCP_MODIFY_REMOVE) { if (modify_flags & OGS_PFCP_MODIFY_REMOVE) {
pdr = tunnel->pdr; pdr = tunnel->pdr;

View File

@ -25,39 +25,39 @@ static uint8_t gtp_cause_from_pfcp(uint8_t pfcp_cause)
{ {
switch (pfcp_cause) { switch (pfcp_cause) {
case OGS_PFCP_CAUSE_REQUEST_ACCEPTED: case OGS_PFCP_CAUSE_REQUEST_ACCEPTED:
return OGS_GTP_CAUSE_REQUEST_ACCEPTED; return OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
case OGS_PFCP_CAUSE_REQUEST_REJECTED: case OGS_PFCP_CAUSE_REQUEST_REJECTED:
return OGS_GTP_CAUSE_REQUEST_REJECTED_REASON_NOT_SPECIFIED; return OGS_GTP2_CAUSE_REQUEST_REJECTED_REASON_NOT_SPECIFIED;
case OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND: case OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND:
return OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; return OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
case OGS_PFCP_CAUSE_MANDATORY_IE_MISSING: case OGS_PFCP_CAUSE_MANDATORY_IE_MISSING:
return OGS_GTP_CAUSE_MANDATORY_IE_MISSING; return OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
case OGS_PFCP_CAUSE_CONDITIONAL_IE_MISSING: case OGS_PFCP_CAUSE_CONDITIONAL_IE_MISSING:
return OGS_GTP_CAUSE_CONDITIONAL_IE_MISSING; return OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING;
case OGS_PFCP_CAUSE_INVALID_LENGTH: case OGS_PFCP_CAUSE_INVALID_LENGTH:
return OGS_GTP_CAUSE_INVALID_LENGTH; return OGS_GTP2_CAUSE_INVALID_LENGTH;
case OGS_PFCP_CAUSE_MANDATORY_IE_INCORRECT: case OGS_PFCP_CAUSE_MANDATORY_IE_INCORRECT:
return OGS_GTP_CAUSE_MANDATORY_IE_INCORRECT; return OGS_GTP2_CAUSE_MANDATORY_IE_INCORRECT;
case OGS_PFCP_CAUSE_INVALID_FORWARDING_POLICY: case OGS_PFCP_CAUSE_INVALID_FORWARDING_POLICY:
case OGS_PFCP_CAUSE_INVALID_F_TEID_ALLOCATION_OPTION: case OGS_PFCP_CAUSE_INVALID_F_TEID_ALLOCATION_OPTION:
return OGS_GTP_CAUSE_INVALID_MESSAGE_FORMAT; return OGS_GTP2_CAUSE_INVALID_MESSAGE_FORMAT;
case OGS_PFCP_CAUSE_NO_ESTABLISHED_PFCP_ASSOCIATION: case OGS_PFCP_CAUSE_NO_ESTABLISHED_PFCP_ASSOCIATION:
return OGS_GTP_CAUSE_REMOTE_PEER_NOT_RESPONDING; return OGS_GTP2_CAUSE_REMOTE_PEER_NOT_RESPONDING;
case OGS_PFCP_CAUSE_RULE_CREATION_MODIFICATION_FAILURE: case OGS_PFCP_CAUSE_RULE_CREATION_MODIFICATION_FAILURE:
return OGS_GTP_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION; return OGS_GTP2_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION;
case OGS_PFCP_CAUSE_PFCP_ENTITY_IN_CONGESTION: case OGS_PFCP_CAUSE_PFCP_ENTITY_IN_CONGESTION:
return OGS_GTP_CAUSE_GTP_C_ENTITY_CONGESTION; return OGS_GTP2_CAUSE_GTP_C_ENTITY_CONGESTION;
case OGS_PFCP_CAUSE_NO_RESOURCES_AVAILABLE: case OGS_PFCP_CAUSE_NO_RESOURCES_AVAILABLE:
return OGS_GTP_CAUSE_NO_RESOURCES_AVAILABLE; return OGS_GTP2_CAUSE_NO_RESOURCES_AVAILABLE;
case OGS_PFCP_CAUSE_SERVICE_NOT_SUPPORTED: case OGS_PFCP_CAUSE_SERVICE_NOT_SUPPORTED:
return OGS_GTP_CAUSE_SERVICE_NOT_SUPPORTED; return OGS_GTP2_CAUSE_SERVICE_NOT_SUPPORTED;
case OGS_PFCP_CAUSE_SYSTEM_FAILURE: case OGS_PFCP_CAUSE_SYSTEM_FAILURE:
return OGS_GTP_CAUSE_SYSTEM_FAILURE; return OGS_GTP2_CAUSE_SYSTEM_FAILURE;
default: default:
return OGS_GTP_CAUSE_SYSTEM_FAILURE; return OGS_GTP2_CAUSE_SYSTEM_FAILURE;
} }
return OGS_GTP_CAUSE_SYSTEM_FAILURE; return OGS_GTP2_CAUSE_SYSTEM_FAILURE;
} }
static void sess_timeout(ogs_gtp_xact_t *xact, void *data) static void sess_timeout(ogs_gtp_xact_t *xact, void *data)
@ -74,7 +74,7 @@ static void sess_timeout(ogs_gtp_xact_t *xact, void *data)
type = xact->seq[0].type; type = xact->seq[0].type;
switch (type) { switch (type) {
case OGS_GTP_CREATE_SESSION_REQUEST_TYPE: case OGS_GTP2_CREATE_SESSION_REQUEST_TYPE:
ogs_error("[%s] No Create Session Response", sgwc_ue->imsi_bcd); ogs_error("[%s] No Create Session Response", sgwc_ue->imsi_bcd);
if (!sgwc_sess_cycle(sess)) { if (!sgwc_sess_cycle(sess)) {
ogs_warn("[%s] Session has already been removed", ogs_warn("[%s] Session has already been removed",
@ -107,7 +107,7 @@ static void bearer_timeout(ogs_gtp_xact_t *xact, void *data)
type = xact->seq[0].type; type = xact->seq[0].type;
switch (type) { switch (type) {
case OGS_GTP_CREATE_BEARER_REQUEST_TYPE: case OGS_GTP2_CREATE_BEARER_REQUEST_TYPE:
ogs_error("[%s] No Create Bearer Response", sgwc_ue->imsi_bcd); ogs_error("[%s] No Create Bearer Response", sgwc_ue->imsi_bcd);
if (!sgwc_bearer_cycle(bearer)) { if (!sgwc_bearer_cycle(bearer)) {
ogs_warn("[%s] Bearer has already been removed", sgwc_ue->imsi_bcd); ogs_warn("[%s] Bearer has already been removed", sgwc_ue->imsi_bcd);
@ -126,7 +126,7 @@ static void bearer_timeout(ogs_gtp_xact_t *xact, void *data)
void sgwc_sxa_handle_session_establishment_response( void sgwc_sxa_handle_session_establishment_response(
sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
ogs_gtp_message_t *gtp_message, ogs_gtp2_message_t *gtp_message,
ogs_pfcp_session_establishment_response_t *pfcp_rsp) ogs_pfcp_session_establishment_response_t *pfcp_rsp)
{ {
int rv, len = 0; int rv, len = 0;
@ -134,8 +134,8 @@ void sgwc_sxa_handle_session_establishment_response(
ogs_pfcp_f_seid_t *up_f_seid = NULL; ogs_pfcp_f_seid_t *up_f_seid = NULL;
ogs_gtp_f_teid_t sgw_s5c_teid, sgw_s5u_teid; ogs_gtp2_f_teid_t sgw_s5c_teid, sgw_s5u_teid;
ogs_gtp_f_teid_t *pgw_s5c_teid = NULL; ogs_gtp2_f_teid_t *pgw_s5c_teid = NULL;
ogs_gtp_xact_t *s11_xact = NULL, *s5c_xact = NULL; ogs_gtp_xact_t *s11_xact = NULL, *s5c_xact = NULL;
ogs_gtp_node_t *pgw = NULL; ogs_gtp_node_t *pgw = NULL;
@ -144,7 +144,7 @@ void sgwc_sxa_handle_session_establishment_response(
sgwc_bearer_t *bearer = NULL; sgwc_bearer_t *bearer = NULL;
sgwc_tunnel_t *dl_tunnel = NULL; sgwc_tunnel_t *dl_tunnel = NULL;
ogs_gtp_create_session_request_t *gtp_req = NULL; ogs_gtp2_create_session_request_t *gtp_req = NULL;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_debug("Session Establishment Response"); ogs_debug("Session Establishment Response");
@ -161,21 +161,21 @@ void sgwc_sxa_handle_session_establishment_response(
ogs_pfcp_xact_commit(pfcp_xact); ogs_pfcp_xact_commit(pfcp_xact);
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (!sess) { if (!sess) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (pfcp_rsp->up_f_seid.presence == 0) { if (pfcp_rsp->up_f_seid.presence == 0) {
ogs_error("No UP F-SEID"); ogs_error("No UP F-SEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (pfcp_rsp->created_pdr[0].presence == 0) { if (pfcp_rsp->created_pdr[0].presence == 0) {
ogs_error("No Created PDR"); ogs_error("No Created PDR");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (pfcp_rsp->cause.presence) { if (pfcp_rsp->cause.presence) {
@ -185,10 +185,10 @@ void sgwc_sxa_handle_session_establishment_response(
} }
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
int i; int i;
uint8_t pfcp_cause_value = OGS_PFCP_CAUSE_REQUEST_ACCEPTED; uint8_t pfcp_cause_value = OGS_PFCP_CAUSE_REQUEST_ACCEPTED;
@ -238,11 +238,11 @@ void sgwc_sxa_handle_session_establishment_response(
cause_value = gtp_cause_from_pfcp(pfcp_cause_value); cause_value = gtp_cause_from_pfcp(pfcp_cause_value);
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
if (sess) sgwc_ue = sess->sgwc_ue; if (sess) sgwc_ue = sess->sgwc_ue;
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -257,8 +257,8 @@ void sgwc_sxa_handle_session_establishment_response(
ogs_error("No UP F-TEID"); ogs_error("No UP F-TEID");
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE,
OGS_GTP_CAUSE_GRE_KEY_NOT_FOUND); OGS_GTP2_CAUSE_GRE_KEY_NOT_FOUND);
return; return;
} }
@ -268,10 +268,10 @@ void sgwc_sxa_handle_session_establishment_response(
sess->sgwu_sxa_seid = be64toh(up_f_seid->seid); sess->sgwu_sxa_seid = be64toh(up_f_seid->seid);
/* Send Control Plane(DL) : SGW-S5C */ /* Send Control Plane(DL) : SGW-S5C */
memset(&sgw_s5c_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&sgw_s5c_teid, 0, sizeof(ogs_gtp2_f_teid_t));
sgw_s5c_teid.interface_type = OGS_GTP_F_TEID_S5_S8_SGW_GTP_C; sgw_s5c_teid.interface_type = OGS_GTP2_F_TEID_S5_S8_SGW_GTP_C;
sgw_s5c_teid.teid = htobe32(sess->sgw_s5c_teid); sgw_s5c_teid.teid = htobe32(sess->sgw_s5c_teid);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
ogs_gtp_self()->gtpc_addr, ogs_gtp_self()->gtpc_addr6, ogs_gtp_self()->gtpc_addr, ogs_gtp_self()->gtpc_addr6,
&sgw_s5c_teid, &len); &sgw_s5c_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
@ -305,11 +305,11 @@ void sgwc_sxa_handle_session_establishment_response(
gtp_req->pgw_s5_s8_address_for_control_plane_or_pmip.presence = 0; gtp_req->pgw_s5_s8_address_for_control_plane_or_pmip.presence = 0;
/* Data Plane(DL) : SGW-S5U */ /* Data Plane(DL) : SGW-S5U */
memset(&sgw_s5u_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&sgw_s5u_teid, 0, sizeof(ogs_gtp2_f_teid_t));
sgw_s5u_teid.teid = htobe32(dl_tunnel->local_teid); sgw_s5u_teid.teid = htobe32(dl_tunnel->local_teid);
sgw_s5u_teid.interface_type = dl_tunnel->interface_type; sgw_s5u_teid.interface_type = dl_tunnel->interface_type;
ogs_assert(dl_tunnel->local_addr || dl_tunnel->local_addr6); ogs_assert(dl_tunnel->local_addr || dl_tunnel->local_addr6);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
dl_tunnel->local_addr, dl_tunnel->local_addr6, &sgw_s5u_teid, &len); dl_tunnel->local_addr, dl_tunnel->local_addr6, &sgw_s5u_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
gtp_req->bearer_contexts_to_be_created.s5_s8_u_sgw_f_teid.presence = 1; gtp_req->bearer_contexts_to_be_created.s5_s8_u_sgw_f_teid.presence = 1;
@ -317,10 +317,10 @@ void sgwc_sxa_handle_session_establishment_response(
&sgw_s5u_teid; &sgw_s5u_teid;
gtp_req->bearer_contexts_to_be_created.s5_s8_u_sgw_f_teid.len = len; gtp_req->bearer_contexts_to_be_created.s5_s8_u_sgw_f_teid.len = len;
gtp_message->h.type = OGS_GTP_CREATE_SESSION_REQUEST_TYPE; gtp_message->h.type = OGS_GTP2_CREATE_SESSION_REQUEST_TYPE;
gtp_message->h.teid = sess->pgw_s5c_teid; gtp_message->h.teid = sess->pgw_s5c_teid;
pkbuf = ogs_gtp_build_msg(gtp_message); pkbuf = ogs_gtp2_build_msg(gtp_message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
ogs_assert(sess->gnode); ogs_assert(sess->gnode);
@ -336,7 +336,7 @@ void sgwc_sxa_handle_session_establishment_response(
void sgwc_sxa_handle_session_modification_response( void sgwc_sxa_handle_session_modification_response(
sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
ogs_gtp_message_t *recv_message, ogs_gtp2_message_t *recv_message,
ogs_pfcp_session_modification_response_t *pfcp_rsp) ogs_pfcp_session_modification_response_t *pfcp_rsp)
{ {
int i, rv, len = 0; int i, rv, len = 0;
@ -346,7 +346,7 @@ void sgwc_sxa_handle_session_modification_response(
ogs_gtp_xact_t *s11_xact = NULL; ogs_gtp_xact_t *s11_xact = NULL;
ogs_gtp_xact_t *s5c_xact = NULL; ogs_gtp_xact_t *s5c_xact = NULL;
ogs_gtp_message_t send_message; ogs_gtp2_message_t send_message;
sgwc_bearer_t *bearer = NULL; sgwc_bearer_t *bearer = NULL;
sgwc_tunnel_t *dl_tunnel = NULL, *ul_tunnel = NULL; sgwc_tunnel_t *dl_tunnel = NULL, *ul_tunnel = NULL;
@ -354,7 +354,7 @@ void sgwc_sxa_handle_session_modification_response(
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_debug("Session Modification Response"); ogs_debug("Session Modification Response");
@ -364,7 +364,7 @@ void sgwc_sxa_handle_session_modification_response(
flags = pfcp_xact->modify_flags; flags = pfcp_xact->modify_flags;
ogs_assert(flags); ogs_assert(flags);
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (flags & OGS_PFCP_MODIFY_SESSION) { if (flags & OGS_PFCP_MODIFY_SESSION) {
if (!sess) { if (!sess) {
@ -373,7 +373,7 @@ void sgwc_sxa_handle_session_modification_response(
sess = pfcp_xact->data; sess = pfcp_xact->data;
ogs_assert(sess); ogs_assert(sess);
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
sgwc_ue = sess->sgwc_ue; sgwc_ue = sess->sgwc_ue;
ogs_assert(sgwc_ue); ogs_assert(sgwc_ue);
@ -388,7 +388,7 @@ void sgwc_sxa_handle_session_modification_response(
sess = bearer->sess; sess = bearer->sess;
ogs_assert(sess); ogs_assert(sess);
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
sgwc_ue = bearer->sgwc_ue; sgwc_ue = bearer->sgwc_ue;
@ -402,10 +402,10 @@ void sgwc_sxa_handle_session_modification_response(
} }
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
uint8_t pfcp_cause_value = OGS_PFCP_CAUSE_REQUEST_ACCEPTED; uint8_t pfcp_cause_value = OGS_PFCP_CAUSE_REQUEST_ACCEPTED;
uint8_t offending_ie_value = 0; uint8_t offending_ie_value = 0;
@ -453,7 +453,7 @@ void sgwc_sxa_handle_session_modification_response(
cause_value = gtp_cause_from_pfcp(pfcp_cause_value); cause_value = gtp_cause_from_pfcp(pfcp_cause_value);
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
/* /*
* You should not change the following order to support * You should not change the following order to support
* OGS_PFCP_MODIFY_REMOVE|OGS_PFCP_MODIFY_CREATE. * OGS_PFCP_MODIFY_REMOVE|OGS_PFCP_MODIFY_CREATE.
@ -468,7 +468,7 @@ void sgwc_sxa_handle_session_modification_response(
if (s5c_xact) { if (s5c_xact) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s5c_xact, sess ? sess->pgw_s5c_teid : 0, s5c_xact, sess ? sess->pgw_s5c_teid : 0,
OGS_GTP_DELETE_BEARER_RESPONSE_TYPE, cause_value); OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE, cause_value);
} }
sgwc_bearer_remove(bearer); sgwc_bearer_remove(bearer);
@ -478,7 +478,7 @@ void sgwc_sxa_handle_session_modification_response(
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s5c_xact, sess ? sess->pgw_s5c_teid : 0, s5c_xact, sess ? sess->pgw_s5c_teid : 0,
OGS_GTP_CREATE_BEARER_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, cause_value);
} else if (flags & OGS_PFCP_MODIFY_ACTIVATE) { } else if (flags & OGS_PFCP_MODIFY_ACTIVATE) {
@ -488,7 +488,7 @@ void sgwc_sxa_handle_session_modification_response(
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
} else if (flags & OGS_PFCP_MODIFY_DL_ONLY) { } else if (flags & OGS_PFCP_MODIFY_DL_ONLY) {
s11_xact = pfcp_xact->assoc_xact; s11_xact = pfcp_xact->assoc_xact;
@ -496,7 +496,7 @@ void sgwc_sxa_handle_session_modification_response(
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE, cause_value); OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value);
} else { } else {
ogs_fatal("Invalid modify_flags[0x%llx]", (long long)flags); ogs_fatal("Invalid modify_flags[0x%llx]", (long long)flags);
ogs_assert_if_reached(); ogs_assert_if_reached();
@ -507,7 +507,7 @@ void sgwc_sxa_handle_session_modification_response(
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
OGS_GTP_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE, cause_value); OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE, cause_value);
} }
ogs_pfcp_xact_commit(pfcp_xact); ogs_pfcp_xact_commit(pfcp_xact);
@ -552,7 +552,7 @@ void sgwc_sxa_handle_session_modification_response(
if (delete_indirect_tunnel_is_done == true) { if (delete_indirect_tunnel_is_done == true) {
sgwc_tunnel_t *tunnel = NULL, *next_tunnel = NULL; sgwc_tunnel_t *tunnel = NULL, *next_tunnel = NULL;
ogs_gtp_delete_indirect_data_forwarding_tunnel_response_t ogs_gtp2_delete_indirect_data_forwarding_tunnel_response_t
*gtp_rsp = NULL; *gtp_rsp = NULL;
ogs_list_for_each(&sgwc_ue->sess_list, sess) { ogs_list_for_each(&sgwc_ue->sess_list, sess) {
@ -560,9 +560,9 @@ void sgwc_sxa_handle_session_modification_response(
ogs_list_for_each_safe(&bearer->tunnel_list, ogs_list_for_each_safe(&bearer->tunnel_list,
next_tunnel, tunnel) { next_tunnel, tunnel) {
if (tunnel->interface_type == if (tunnel->interface_type ==
OGS_GTP_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING || OGS_GTP2_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING ||
tunnel->interface_type == tunnel->interface_type ==
OGS_GTP_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING) { OGS_GTP2_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING) {
sgwc_tunnel_remove(tunnel); sgwc_tunnel_remove(tunnel);
} }
} }
@ -573,20 +573,20 @@ void sgwc_sxa_handle_session_modification_response(
delete_indirect_data_forwarding_tunnel_response; delete_indirect_data_forwarding_tunnel_response;
ogs_assert(gtp_rsp); ogs_assert(gtp_rsp);
memset(&send_message, 0, sizeof(ogs_gtp_message_t)); memset(&send_message, 0, sizeof(ogs_gtp2_message_t));
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
gtp_rsp->cause.presence = 1; gtp_rsp->cause.presence = 1;
gtp_rsp->cause.data = &cause; gtp_rsp->cause.data = &cause;
gtp_rsp->cause.len = sizeof(cause); gtp_rsp->cause.len = sizeof(cause);
send_message.h.type = send_message.h.type =
OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE; OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE;
send_message.h.teid = sgwc_ue->mme_s11_teid; send_message.h.teid = sgwc_ue->mme_s11_teid;
pkbuf = ogs_gtp_build_msg(&send_message); pkbuf = ogs_gtp2_build_msg(&send_message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
rv = ogs_gtp_xact_update_tx(s11_xact, &send_message.h, pkbuf); rv = ogs_gtp_xact_update_tx(s11_xact, &send_message.h, pkbuf);
@ -601,10 +601,10 @@ void sgwc_sxa_handle_session_modification_response(
if (s5c_xact) { if (s5c_xact) {
ogs_assert(recv_message); ogs_assert(recv_message);
recv_message->h.type = OGS_GTP_DELETE_BEARER_RESPONSE_TYPE; recv_message->h.type = OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE;
recv_message->h.teid = sess->pgw_s5c_teid; recv_message->h.teid = sess->pgw_s5c_teid;
pkbuf = ogs_gtp_build_msg(recv_message); pkbuf = ogs_gtp2_build_msg(recv_message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
rv = ogs_gtp_xact_update_tx(s5c_xact, &recv_message->h, pkbuf); rv = ogs_gtp_xact_update_tx(s5c_xact, &recv_message->h, pkbuf);
@ -619,8 +619,8 @@ void sgwc_sxa_handle_session_modification_response(
} else if (flags & OGS_PFCP_MODIFY_CREATE) { } else if (flags & OGS_PFCP_MODIFY_CREATE) {
if (flags & OGS_PFCP_MODIFY_UL_ONLY) { if (flags & OGS_PFCP_MODIFY_UL_ONLY) {
ogs_gtp_create_bearer_request_t *gtp_req = NULL; ogs_gtp2_create_bearer_request_t *gtp_req = NULL;
ogs_gtp_f_teid_t sgw_s1u_teid; ogs_gtp2_f_teid_t sgw_s1u_teid;
s5c_xact = pfcp_xact->assoc_xact; s5c_xact = pfcp_xact->assoc_xact;
ogs_assert(s5c_xact); ogs_assert(s5c_xact);
@ -633,11 +633,11 @@ void sgwc_sxa_handle_session_modification_response(
gtp_req->bearer_contexts.s4_u_sgsn_f_teid.presence = 0; gtp_req->bearer_contexts.s4_u_sgsn_f_teid.presence = 0;
/* Send Data Plane(UL) : SGW-S1U */ /* Send Data Plane(UL) : SGW-S1U */
memset(&sgw_s1u_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&sgw_s1u_teid, 0, sizeof(ogs_gtp2_f_teid_t));
sgw_s1u_teid.interface_type = ul_tunnel->interface_type; sgw_s1u_teid.interface_type = ul_tunnel->interface_type;
sgw_s1u_teid.teid = htobe32(ul_tunnel->local_teid); sgw_s1u_teid.teid = htobe32(ul_tunnel->local_teid);
ogs_assert(ul_tunnel->local_addr || ul_tunnel->local_addr6); ogs_assert(ul_tunnel->local_addr || ul_tunnel->local_addr6);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
ul_tunnel->local_addr, ul_tunnel->local_addr6, ul_tunnel->local_addr, ul_tunnel->local_addr6,
&sgw_s1u_teid, &len); &sgw_s1u_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
@ -645,10 +645,10 @@ void sgwc_sxa_handle_session_modification_response(
gtp_req->bearer_contexts.s1_u_enodeb_f_teid.data = &sgw_s1u_teid; gtp_req->bearer_contexts.s1_u_enodeb_f_teid.data = &sgw_s1u_teid;
gtp_req->bearer_contexts.s1_u_enodeb_f_teid.len = len; gtp_req->bearer_contexts.s1_u_enodeb_f_teid.len = len;
recv_message->h.type = OGS_GTP_CREATE_BEARER_REQUEST_TYPE; recv_message->h.type = OGS_GTP2_CREATE_BEARER_REQUEST_TYPE;
recv_message->h.teid = sgwc_ue->mme_s11_teid; recv_message->h.teid = sgwc_ue->mme_s11_teid;
pkbuf = ogs_gtp_build_msg(recv_message); pkbuf = ogs_gtp2_build_msg(recv_message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
ogs_assert(sgwc_ue->gnode); ogs_assert(sgwc_ue->gnode);
@ -663,8 +663,8 @@ void sgwc_sxa_handle_session_modification_response(
ogs_expect(rv == OGS_OK); ogs_expect(rv == OGS_OK);
} else if (flags & OGS_PFCP_MODIFY_DL_ONLY) { } else if (flags & OGS_PFCP_MODIFY_DL_ONLY) {
ogs_gtp_create_bearer_response_t *gtp_rsp = NULL; ogs_gtp2_create_bearer_response_t *gtp_rsp = NULL;
ogs_gtp_f_teid_t sgw_s5u_teid, pgw_s5u_teid; ogs_gtp2_f_teid_t sgw_s5u_teid, pgw_s5u_teid;
s5c_xact = pfcp_xact->assoc_xact; s5c_xact = pfcp_xact->assoc_xact;
ogs_assert(s5c_xact); ogs_assert(s5c_xact);
@ -681,11 +681,11 @@ void sgwc_sxa_handle_session_modification_response(
/* Data Plane(DL) : SGW-S5U */ /* Data Plane(DL) : SGW-S5U */
ogs_assert(dl_tunnel); ogs_assert(dl_tunnel);
memset(&sgw_s5u_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&sgw_s5u_teid, 0, sizeof(ogs_gtp2_f_teid_t));
sgw_s5u_teid.interface_type = OGS_GTP_F_TEID_S5_S8_SGW_GTP_U; sgw_s5u_teid.interface_type = OGS_GTP2_F_TEID_S5_S8_SGW_GTP_U;
sgw_s5u_teid.teid = htobe32(dl_tunnel->local_teid); sgw_s5u_teid.teid = htobe32(dl_tunnel->local_teid);
ogs_assert(dl_tunnel->local_addr || dl_tunnel->local_addr6); ogs_assert(dl_tunnel->local_addr || dl_tunnel->local_addr6);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
dl_tunnel->local_addr, dl_tunnel->local_addr6, dl_tunnel->local_addr, dl_tunnel->local_addr6,
&sgw_s5u_teid, &len); &sgw_s5u_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
@ -695,18 +695,18 @@ void sgwc_sxa_handle_session_modification_response(
/* Data Plane(UL) : PGW-S5U */ /* Data Plane(UL) : PGW-S5U */
ogs_assert(ul_tunnel); ogs_assert(ul_tunnel);
pgw_s5u_teid.interface_type = OGS_GTP_F_TEID_S5_S8_PGW_GTP_U; pgw_s5u_teid.interface_type = OGS_GTP2_F_TEID_S5_S8_PGW_GTP_U;
pgw_s5u_teid.teid = htobe32(ul_tunnel->remote_teid); pgw_s5u_teid.teid = htobe32(ul_tunnel->remote_teid);
rv = ogs_gtp_ip_to_f_teid( rv = ogs_gtp2_ip_to_f_teid(
&ul_tunnel->remote_ip, &pgw_s5u_teid, &len); &ul_tunnel->remote_ip, &pgw_s5u_teid, &len);
gtp_rsp->bearer_contexts.s5_s8_u_pgw_f_teid.presence = 1; gtp_rsp->bearer_contexts.s5_s8_u_pgw_f_teid.presence = 1;
gtp_rsp->bearer_contexts.s5_s8_u_pgw_f_teid.data = &pgw_s5u_teid; gtp_rsp->bearer_contexts.s5_s8_u_pgw_f_teid.data = &pgw_s5u_teid;
gtp_rsp->bearer_contexts.s5_s8_u_pgw_f_teid.len = len; gtp_rsp->bearer_contexts.s5_s8_u_pgw_f_teid.len = len;
recv_message->h.type = OGS_GTP_CREATE_BEARER_RESPONSE_TYPE; recv_message->h.type = OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE;
recv_message->h.teid = sess->pgw_s5c_teid; recv_message->h.teid = sess->pgw_s5c_teid;
pkbuf = ogs_gtp_build_msg(recv_message); pkbuf = ogs_gtp2_build_msg(recv_message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
rv = ogs_gtp_xact_update_tx(s5c_xact, &recv_message->h, pkbuf); rv = ogs_gtp_xact_update_tx(s5c_xact, &recv_message->h, pkbuf);
@ -732,13 +732,13 @@ void sgwc_sxa_handle_session_modification_response(
if (create_indirect_tunnel_is_done == true) { if (create_indirect_tunnel_is_done == true) {
sgwc_tunnel_t *tunnel = NULL; sgwc_tunnel_t *tunnel = NULL;
ogs_gtp_create_indirect_data_forwarding_tunnel_request_t ogs_gtp2_create_indirect_data_forwarding_tunnel_request_t
*gtp_req = NULL; *gtp_req = NULL;
ogs_gtp_create_indirect_data_forwarding_tunnel_response_t ogs_gtp2_create_indirect_data_forwarding_tunnel_response_t
*gtp_rsp = NULL; *gtp_rsp = NULL;
ogs_gtp_f_teid_t rsp_dl_teid[OGS_GTP_MAX_INDIRECT_TUNNEL]; ogs_gtp2_f_teid_t rsp_dl_teid[OGS_GTP2_MAX_INDIRECT_TUNNEL];
ogs_gtp_f_teid_t rsp_ul_teid[OGS_GTP_MAX_INDIRECT_TUNNEL]; ogs_gtp2_f_teid_t rsp_ul_teid[OGS_GTP2_MAX_INDIRECT_TUNNEL];
ogs_assert(recv_message); ogs_assert(recv_message);
gtp_req = &recv_message-> gtp_req = &recv_message->
@ -748,10 +748,10 @@ void sgwc_sxa_handle_session_modification_response(
create_indirect_data_forwarding_tunnel_response; create_indirect_data_forwarding_tunnel_response;
ogs_assert(gtp_rsp); ogs_assert(gtp_rsp);
memset(&send_message, 0, sizeof(ogs_gtp_message_t)); memset(&send_message, 0, sizeof(ogs_gtp2_message_t));
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
gtp_rsp->cause.presence = 1; gtp_rsp->cause.presence = 1;
gtp_rsp->cause.data = &cause; gtp_rsp->cause.data = &cause;
@ -766,16 +766,16 @@ void sgwc_sxa_handle_session_modification_response(
ogs_list_for_each(&bearer->tunnel_list, tunnel) { ogs_list_for_each(&bearer->tunnel_list, tunnel) {
if (tunnel->interface_type == if (tunnel->interface_type ==
OGS_GTP_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING) { OGS_GTP2_F_TEID_SGW_GTP_U_FOR_DL_DATA_FORWARDING) {
memset(&rsp_dl_teid[i], memset(&rsp_dl_teid[i],
0, sizeof(ogs_gtp_f_teid_t)); 0, sizeof(ogs_gtp2_f_teid_t));
rsp_dl_teid[i].interface_type = rsp_dl_teid[i].interface_type =
tunnel->interface_type; tunnel->interface_type;
rsp_dl_teid[i].teid = htobe32(tunnel->local_teid); rsp_dl_teid[i].teid = htobe32(tunnel->local_teid);
ogs_assert( ogs_assert(
tunnel->local_addr || tunnel->local_addr6); tunnel->local_addr || tunnel->local_addr6);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
tunnel->local_addr, tunnel->local_addr6, tunnel->local_addr, tunnel->local_addr6,
&rsp_dl_teid[i], &len); &rsp_dl_teid[i], &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
@ -787,16 +787,16 @@ void sgwc_sxa_handle_session_modification_response(
s4_u_sgsn_f_teid.len = len; s4_u_sgsn_f_teid.len = len;
} else if (tunnel->interface_type == } else if (tunnel->interface_type ==
OGS_GTP_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING) { OGS_GTP2_F_TEID_SGW_GTP_U_FOR_UL_DATA_FORWARDING) {
memset(&rsp_ul_teid[i], memset(&rsp_ul_teid[i],
0, sizeof(ogs_gtp_f_teid_t)); 0, sizeof(ogs_gtp2_f_teid_t));
rsp_ul_teid[i].teid = htobe32(tunnel->local_teid); rsp_ul_teid[i].teid = htobe32(tunnel->local_teid);
rsp_ul_teid[i].interface_type = rsp_ul_teid[i].interface_type =
tunnel->interface_type; tunnel->interface_type;
ogs_assert( ogs_assert(
tunnel->local_addr || tunnel->local_addr6); tunnel->local_addr || tunnel->local_addr6);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
tunnel->local_addr, tunnel->local_addr6, tunnel->local_addr, tunnel->local_addr6,
&rsp_ul_teid[i], &len); &rsp_ul_teid[i], &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
@ -828,10 +828,10 @@ void sgwc_sxa_handle_session_modification_response(
} }
send_message.h.type = send_message.h.type =
OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE; OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE;
send_message.h.teid = sgwc_ue->mme_s11_teid; send_message.h.teid = sgwc_ue->mme_s11_teid;
pkbuf = ogs_gtp_build_msg(&send_message); pkbuf = ogs_gtp2_build_msg(&send_message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
rv = ogs_gtp_xact_update_tx(s11_xact, &send_message.h, pkbuf); rv = ogs_gtp_xact_update_tx(s11_xact, &send_message.h, pkbuf);
@ -850,19 +850,19 @@ void sgwc_sxa_handle_session_modification_response(
ogs_assert(s11_xact); ogs_assert(s11_xact);
if (flags & OGS_PFCP_MODIFY_UL_ONLY) { if (flags & OGS_PFCP_MODIFY_UL_ONLY) {
ogs_gtp_create_session_response_t *gtp_rsp = NULL; ogs_gtp2_create_session_response_t *gtp_rsp = NULL;
ogs_gtp_f_teid_t sgw_s11_teid; ogs_gtp2_f_teid_t sgw_s11_teid;
ogs_gtp_f_teid_t sgw_s1u_teid; ogs_gtp2_f_teid_t sgw_s1u_teid;
ogs_assert(recv_message); ogs_assert(recv_message);
gtp_rsp = &recv_message->create_session_response; gtp_rsp = &recv_message->create_session_response;
ogs_assert(gtp_rsp); ogs_assert(gtp_rsp);
/* Send Control Plane(UL) : SGW-S11 */ /* Send Control Plane(UL) : SGW-S11 */
memset(&sgw_s11_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&sgw_s11_teid, 0, sizeof(ogs_gtp2_f_teid_t));
sgw_s11_teid.interface_type = OGS_GTP_F_TEID_S11_S4_SGW_GTP_C; sgw_s11_teid.interface_type = OGS_GTP2_F_TEID_S11_S4_SGW_GTP_C;
sgw_s11_teid.teid = htobe32(sgwc_ue->sgw_s11_teid); sgw_s11_teid.teid = htobe32(sgwc_ue->sgw_s11_teid);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
ogs_gtp_self()->gtpc_addr, ogs_gtp_self()->gtpc_addr6, ogs_gtp_self()->gtpc_addr, ogs_gtp_self()->gtpc_addr6,
&sgw_s11_teid, &len); &sgw_s11_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
@ -872,11 +872,11 @@ void sgwc_sxa_handle_session_modification_response(
/* Send Data Plane(UL) : SGW-S1U */ /* Send Data Plane(UL) : SGW-S1U */
ogs_assert(ul_tunnel); ogs_assert(ul_tunnel);
memset(&sgw_s1u_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&sgw_s1u_teid, 0, sizeof(ogs_gtp2_f_teid_t));
sgw_s1u_teid.interface_type = ul_tunnel->interface_type; sgw_s1u_teid.interface_type = ul_tunnel->interface_type;
sgw_s1u_teid.teid = htobe32(ul_tunnel->local_teid); sgw_s1u_teid.teid = htobe32(ul_tunnel->local_teid);
ogs_assert(ul_tunnel->local_addr || ul_tunnel->local_addr6); ogs_assert(ul_tunnel->local_addr || ul_tunnel->local_addr6);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
ul_tunnel->local_addr, ul_tunnel->local_addr6, ul_tunnel->local_addr, ul_tunnel->local_addr6,
&sgw_s1u_teid, &len); &sgw_s1u_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
@ -885,10 +885,10 @@ void sgwc_sxa_handle_session_modification_response(
&sgw_s1u_teid; &sgw_s1u_teid;
gtp_rsp->bearer_contexts_created.s1_u_enodeb_f_teid.len = len; gtp_rsp->bearer_contexts_created.s1_u_enodeb_f_teid.len = len;
recv_message->h.type = OGS_GTP_CREATE_SESSION_RESPONSE_TYPE; recv_message->h.type = OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE;
recv_message->h.teid = sgwc_ue->mme_s11_teid; recv_message->h.teid = sgwc_ue->mme_s11_teid;
pkbuf = ogs_gtp_build_msg(recv_message); pkbuf = ogs_gtp2_build_msg(recv_message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
rv = ogs_gtp_xact_update_tx(s11_xact, &recv_message->h, pkbuf); rv = ogs_gtp_xact_update_tx(s11_xact, &recv_message->h, pkbuf);
@ -898,10 +898,10 @@ void sgwc_sxa_handle_session_modification_response(
ogs_expect(rv == OGS_OK); ogs_expect(rv == OGS_OK);
} else if (flags & OGS_PFCP_MODIFY_DL_ONLY) { } else if (flags & OGS_PFCP_MODIFY_DL_ONLY) {
ogs_gtp_modify_bearer_request_t *gtp_req = NULL; ogs_gtp2_modify_bearer_request_t *gtp_req = NULL;
ogs_gtp_modify_bearer_response_t *gtp_rsp = NULL; ogs_gtp2_modify_bearer_response_t *gtp_rsp = NULL;
ogs_gtp_indication_t *indication = NULL; ogs_gtp2_indication_t *indication = NULL;
ogs_assert(recv_message); ogs_assert(recv_message);
gtp_req = &recv_message->modify_bearer_request; gtp_req = &recv_message->modify_bearer_request;
@ -914,10 +914,10 @@ void sgwc_sxa_handle_session_modification_response(
} }
if (indication && indication->handover_indication) { if (indication && indication->handover_indication) {
recv_message->h.type = OGS_GTP_MODIFY_BEARER_REQUEST_TYPE; recv_message->h.type = OGS_GTP2_MODIFY_BEARER_REQUEST_TYPE;
recv_message->h.teid = sess->pgw_s5c_teid; recv_message->h.teid = sess->pgw_s5c_teid;
pkbuf = ogs_gtp_build_msg(recv_message); pkbuf = ogs_gtp2_build_msg(recv_message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
ogs_assert(sess->gnode); ogs_assert(sess->gnode);
@ -935,10 +935,10 @@ void sgwc_sxa_handle_session_modification_response(
gtp_rsp = &send_message.modify_bearer_response; gtp_rsp = &send_message.modify_bearer_response;
ogs_assert(gtp_rsp); ogs_assert(gtp_rsp);
memset(&send_message, 0, sizeof(ogs_gtp_message_t)); memset(&send_message, 0, sizeof(ogs_gtp2_message_t));
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
gtp_rsp->cause.presence = 1; gtp_rsp->cause.presence = 1;
gtp_rsp->cause.data = &cause; gtp_rsp->cause.data = &cause;
@ -974,10 +974,10 @@ void sgwc_sxa_handle_session_modification_response(
gtp_rsp->bearer_contexts_modified.cause.len = sizeof(cause); gtp_rsp->bearer_contexts_modified.cause.len = sizeof(cause);
gtp_rsp->bearer_contexts_modified.cause.data = &cause; gtp_rsp->bearer_contexts_modified.cause.data = &cause;
send_message.h.type = OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE; send_message.h.type = OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE;
send_message.h.teid = sgwc_ue->mme_s11_teid; send_message.h.teid = sgwc_ue->mme_s11_teid;
pkbuf = ogs_gtp_build_msg(&send_message); pkbuf = ogs_gtp2_build_msg(&send_message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
rv = ogs_gtp_xact_update_tx(s11_xact, &send_message.h, pkbuf); rv = ogs_gtp_xact_update_tx(s11_xact, &send_message.h, pkbuf);
@ -1010,10 +1010,10 @@ void sgwc_sxa_handle_session_modification_response(
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
sgwc_gtp_send_downlink_data_notification( sgwc_gtp_send_downlink_data_notification(
OGS_GTP_CAUSE_ERROR_INDICATION_RECEIVED, bearer)); OGS_GTP2_CAUSE_ERROR_INDICATION_RECEIVED, bearer));
} else { } else {
ogs_gtp_release_access_bearers_response_t *gtp_rsp = NULL; ogs_gtp2_release_access_bearers_response_t *gtp_rsp = NULL;
s11_xact = pfcp_xact->assoc_xact; s11_xact = pfcp_xact->assoc_xact;
ogs_assert(s11_xact); ogs_assert(s11_xact);
@ -1021,20 +1021,20 @@ void sgwc_sxa_handle_session_modification_response(
gtp_rsp = &send_message.release_access_bearers_response; gtp_rsp = &send_message.release_access_bearers_response;
ogs_assert(gtp_rsp); ogs_assert(gtp_rsp);
memset(&send_message, 0, sizeof(ogs_gtp_message_t)); memset(&send_message, 0, sizeof(ogs_gtp2_message_t));
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
gtp_rsp->cause.presence = 1; gtp_rsp->cause.presence = 1;
gtp_rsp->cause.data = &cause; gtp_rsp->cause.data = &cause;
gtp_rsp->cause.len = sizeof(cause); gtp_rsp->cause.len = sizeof(cause);
send_message.h.type = send_message.h.type =
OGS_GTP_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE; OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE;
send_message.h.teid = sgwc_ue->mme_s11_teid; send_message.h.teid = sgwc_ue->mme_s11_teid;
pkbuf = ogs_gtp_build_msg(&send_message); pkbuf = ogs_gtp2_build_msg(&send_message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
rv = ogs_gtp_xact_update_tx(s11_xact, &send_message.h, pkbuf); rv = ogs_gtp_xact_update_tx(s11_xact, &send_message.h, pkbuf);
@ -1054,7 +1054,7 @@ void sgwc_sxa_handle_session_modification_response(
void sgwc_sxa_handle_session_deletion_response( void sgwc_sxa_handle_session_deletion_response(
sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
ogs_gtp_message_t *gtp_message, ogs_gtp2_message_t *gtp_message,
ogs_pfcp_session_deletion_response_t *pfcp_rsp) ogs_pfcp_session_deletion_response_t *pfcp_rsp)
{ {
int rv; int rv;
@ -1071,11 +1071,11 @@ void sgwc_sxa_handle_session_deletion_response(
ogs_assert(pfcp_xact); ogs_assert(pfcp_xact);
ogs_assert(pfcp_rsp); ogs_assert(pfcp_rsp);
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (!sess) { if (!sess) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (pfcp_rsp->cause.presence) { if (pfcp_rsp->cause.presence) {
@ -1085,7 +1085,7 @@ void sgwc_sxa_handle_session_deletion_response(
} }
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
gtp_xact = pfcp_xact->assoc_xact; gtp_xact = pfcp_xact->assoc_xact;
@ -1098,7 +1098,7 @@ void sgwc_sxa_handle_session_deletion_response(
} }
switch (gtp_message->h.type) { switch (gtp_message->h.type) {
case OGS_GTP_DELETE_SESSION_RESPONSE_TYPE: case OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE:
/* /*
* 1. MME sends Delete Session Request to SGW/SMF. * 1. MME sends Delete Session Request to SGW/SMF.
* 2. SMF sends Delete Session Response to SGW/MME. * 2. SMF sends Delete Session Response to SGW/MME.
@ -1106,7 +1106,7 @@ void sgwc_sxa_handle_session_deletion_response(
if (sess) sgwc_ue = sess->sgwc_ue; if (sess) sgwc_ue = sess->sgwc_ue;
teid = sgwc_ue ? sgwc_ue->mme_s11_teid : 0; teid = sgwc_ue ? sgwc_ue->mme_s11_teid : 0;
break; break;
case OGS_GTP_DELETE_BEARER_RESPONSE_TYPE: case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE:
/* /*
* 1. SMF sends Delete Bearer Request(DEFAULT BEARER) to SGW/MME. * 1. SMF sends Delete Bearer Request(DEFAULT BEARER) to SGW/MME.
* 2. MME sends Delete Bearer Response to SGW/SMF. * 2. MME sends Delete Bearer Response to SGW/SMF.
@ -1127,7 +1127,7 @@ void sgwc_sxa_handle_session_deletion_response(
ogs_assert_if_reached(); ogs_assert_if_reached();
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
if (gtp_xact) { if (gtp_xact) {
ogs_gtp_send_error_message( ogs_gtp_send_error_message(
gtp_xact, teid, gtp_message->h.type, cause_value); gtp_xact, teid, gtp_message->h.type, cause_value);
@ -1141,15 +1141,15 @@ void sgwc_sxa_handle_session_deletion_response(
if (gtp_xact) { if (gtp_xact) {
/* /*
* If gtp_message->h.type == OGS_GTP_DELETE_SESSION_RESPONSE_TYPE * If gtp_message->h.type == OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE
* Then gtp_xact is S11-XACT * Then gtp_xact is S11-XACT
* *
* If gtp_message->h.type == OGS_GTP_DELETE_BEARER_RESPONSE_TYPE * If gtp_message->h.type == OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE
* Then gtp_xact is S5C-XACT * Then gtp_xact is S5C-XACT
*/ */
gtp_message->h.teid = teid; gtp_message->h.teid = teid;
pkbuf = ogs_gtp_build_msg(gtp_message); pkbuf = ogs_gtp2_build_msg(gtp_message);
ogs_expect_or_return(pkbuf); ogs_expect_or_return(pkbuf);
rv = ogs_gtp_xact_update_tx(gtp_xact, &gtp_message->h, pkbuf); rv = ogs_gtp_xact_update_tx(gtp_xact, &gtp_message->h, pkbuf);
@ -1180,7 +1180,7 @@ void sgwc_sxa_handle_session_report_request(
ogs_assert(pfcp_xact); ogs_assert(pfcp_xact);
ogs_assert(pfcp_req); ogs_assert(pfcp_req);
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (!sess) { if (!sess) {
ogs_warn("No Context"); ogs_warn("No Context");
@ -1189,10 +1189,10 @@ void sgwc_sxa_handle_session_report_request(
if (pfcp_req->report_type.presence == 0) { if (pfcp_req->report_type.presence == 0) {
ogs_error("No Report Type"); ogs_error("No Report Type");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_pfcp_send_error_message(pfcp_xact, 0, ogs_pfcp_send_error_message(pfcp_xact, 0,
OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE, OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE,
cause_value, 0); cause_value, 0);
@ -1236,7 +1236,7 @@ void sgwc_sxa_handle_session_report_request(
if (tunnel->pdr->id == pdr_id) { if (tunnel->pdr->id == pdr_id) {
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
sgwc_gtp_send_downlink_data_notification( sgwc_gtp_send_downlink_data_notification(
OGS_GTP_CAUSE_UNDEFINED_VALUE, bearer)); OGS_GTP2_CAUSE_UNDEFINED_VALUE, bearer));
return; return;
} }
} }

View File

@ -28,15 +28,15 @@ extern "C" {
void sgwc_sxa_handle_session_establishment_response( void sgwc_sxa_handle_session_establishment_response(
sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
ogs_gtp_message_t *gtp_message, ogs_gtp2_message_t *gtp_message,
ogs_pfcp_session_establishment_response_t *pfcp_rsp); ogs_pfcp_session_establishment_response_t *pfcp_rsp);
void sgwc_sxa_handle_session_modification_response( void sgwc_sxa_handle_session_modification_response(
sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
ogs_gtp_message_t *gtp_message, ogs_gtp2_message_t *gtp_message,
ogs_pfcp_session_modification_response_t *pfcp_rsp); ogs_pfcp_session_modification_response_t *pfcp_rsp);
void sgwc_sxa_handle_session_deletion_response( void sgwc_sxa_handle_session_deletion_response(
sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
ogs_gtp_message_t *gtp_message, ogs_gtp2_message_t *gtp_message,
ogs_pfcp_session_deletion_response_t *pfcp_rsp); ogs_pfcp_session_deletion_response_t *pfcp_rsp);
void sgwc_sxa_handle_session_report_request( void sgwc_sxa_handle_session_report_request(
sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,

View File

@ -35,7 +35,7 @@ static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_sockaddr_t from; ogs_sockaddr_t from;
ogs_gtp_header_t *gtp_h = NULL; ogs_gtp2_header_t *gtp_h = NULL;
ogs_pfcp_user_plane_report_t report; ogs_pfcp_user_plane_report_t report;
uint32_t teid; uint32_t teid;
@ -59,8 +59,8 @@ static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
ogs_assert(pkbuf); ogs_assert(pkbuf);
ogs_assert(pkbuf->len); ogs_assert(pkbuf->len);
gtp_h = (ogs_gtp_header_t *)pkbuf->data; gtp_h = (ogs_gtp2_header_t *)pkbuf->data;
if (gtp_h->version != OGS_GTP_VERSION_1) { if (gtp_h->version != OGS_GTP2_VERSION_1) {
ogs_error("[DROP] Invalid GTPU version [%d]", gtp_h->version); ogs_error("[DROP] Invalid GTPU version [%d]", gtp_h->version);
ogs_log_hexdump(OGS_LOG_ERROR, pkbuf->data, pkbuf->len); ogs_log_hexdump(OGS_LOG_ERROR, pkbuf->data, pkbuf->len);
goto cleanup; goto cleanup;
@ -70,7 +70,7 @@ static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
ogs_pkbuf_t *echo_rsp; ogs_pkbuf_t *echo_rsp;
ogs_debug("[RECV] Echo Request from [%s]", OGS_ADDR(&from, buf)); ogs_debug("[RECV] Echo Request from [%s]", OGS_ADDR(&from, buf));
echo_rsp = ogs_gtp_handle_echo_req(pkbuf); echo_rsp = ogs_gtp2_handle_echo_req(pkbuf);
ogs_expect(echo_rsp); ogs_expect(echo_rsp);
if (echo_rsp) { if (echo_rsp) {
ssize_t sent; ssize_t sent;
@ -103,13 +103,13 @@ static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
* Note 4 : For a GTP-PDU with several Extension Headers, the PDU * Note 4 : For a GTP-PDU with several Extension Headers, the PDU
* Session Container should be the first Extension Header * Session Container should be the first Extension Header
*/ */
ogs_gtp_extension_header_t *extension_header = ogs_gtp2_extension_header_t *extension_header =
(ogs_gtp_extension_header_t *)(pkbuf->data + OGS_GTPV1U_HEADER_LEN); (ogs_gtp2_extension_header_t *)(pkbuf->data + OGS_GTPV1U_HEADER_LEN);
ogs_assert(extension_header); ogs_assert(extension_header);
if (extension_header->type == if (extension_header->type ==
OGS_GTP_EXTENSION_HEADER_TYPE_PDU_SESSION_CONTAINER) { OGS_GTP2_EXTENSION_HEADER_TYPE_PDU_SESSION_CONTAINER) {
if (extension_header->pdu_type == if (extension_header->pdu_type ==
OGS_GTP_EXTENSION_HEADER_PDU_TYPE_UL_PDU_SESSION_INFORMATION) { OGS_GTP2_EXTENSION_HEADER_PDU_TYPE_UL_PDU_SESSION_INFORMATION) {
ogs_debug(" QFI [0x%x]", ogs_debug(" QFI [0x%x]",
extension_header->qos_flow_identifier); extension_header->qos_flow_identifier);
qfi = extension_header->qos_flow_identifier; qfi = extension_header->qos_flow_identifier;

View File

@ -40,7 +40,7 @@ static void bearer_timeout(ogs_gtp_xact_t *xact, void *data)
type = xact->seq[0].type; type = xact->seq[0].type;
switch (type) { switch (type) {
case OGS_GTP_CREATE_BEARER_REQUEST_TYPE: case OGS_GTP2_CREATE_BEARER_REQUEST_TYPE:
ogs_error("[%s] No Create Bearer Response", smf_ue->imsi_bcd); ogs_error("[%s] No Create Bearer Response", smf_ue->imsi_bcd);
if (!smf_bearer_cycle(bearer)) { if (!smf_bearer_cycle(bearer)) {
ogs_warn("[%s] Bearer has already been removed", smf_ue->imsi_bcd); ogs_warn("[%s] Bearer has already been removed", smf_ue->imsi_bcd);
@ -50,9 +50,9 @@ static void bearer_timeout(ogs_gtp_xact_t *xact, void *data)
smf_epc_pfcp_send_bearer_modification_request( smf_epc_pfcp_send_bearer_modification_request(
bearer, NULL, OGS_PFCP_MODIFY_REMOVE, bearer, NULL, OGS_PFCP_MODIFY_REMOVE,
OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED, OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED,
OGS_GTP_CAUSE_UNDEFINED_VALUE)); OGS_GTP2_CAUSE_UNDEFINED_VALUE));
break; break;
case OGS_GTP_UPDATE_BEARER_REQUEST_TYPE: case OGS_GTP2_UPDATE_BEARER_REQUEST_TYPE:
ogs_error("[%s] No Update Bearer Response", smf_ue->imsi_bcd); ogs_error("[%s] No Update Bearer Response", smf_ue->imsi_bcd);
break; break;
default: default:
@ -74,7 +74,7 @@ static void bearer_timeout(ogs_gtp_xact_t *xact, void *data)
* TFT : Local <UE_IP> <UE_PORT> REMOTE <P-CSCF_RTP_IP> <P-CSCF_RTP_PORT> * TFT : Local <UE_IP> <UE_PORT> REMOTE <P-CSCF_RTP_IP> <P-CSCF_RTP_PORT>
*/ */
static void encode_traffic_flow_template( static void encode_traffic_flow_template(
ogs_gtp_tft_t *tft, smf_bearer_t *bearer, uint8_t tft_operation_code) ogs_gtp2_tft_t *tft, smf_bearer_t *bearer, uint8_t tft_operation_code)
{ {
int i; int i;
smf_pf_t *pf = NULL; smf_pf_t *pf = NULL;
@ -86,8 +86,8 @@ static void encode_traffic_flow_template(
tft->code = tft_operation_code; tft->code = tft_operation_code;
i = 0; i = 0;
if (tft_operation_code != OGS_GTP_TFT_CODE_DELETE_EXISTING_TFT && if (tft_operation_code != OGS_GTP2_TFT_CODE_DELETE_EXISTING_TFT &&
tft_operation_code != OGS_GTP_TFT_CODE_NO_TFT_OPERATION) { tft_operation_code != OGS_GTP2_TFT_CODE_NO_TFT_OPERATION) {
ogs_list_for_each_entry(&bearer->pf_to_add_list, pf, to_add_node) { ogs_list_for_each_entry(&bearer->pf_to_add_list, pf, to_add_node) {
ogs_assert(i < OGS_MAX_NUM_OF_FLOW_IN_GTP); ogs_assert(i < OGS_MAX_NUM_OF_FLOW_IN_GTP);
tft->pf[i].identifier = pf->identifier - 1; tft->pf[i].identifier = pf->identifier - 1;
@ -95,7 +95,7 @@ static void encode_traffic_flow_template(
/* Deletion of packet filters /* Deletion of packet filters
* from existing requires only the identifier */ * from existing requires only the identifier */
if (tft_operation_code != if (tft_operation_code !=
OGS_GTP_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING) { OGS_GTP2_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING) {
tft->pf[i].direction = pf->direction; tft->pf[i].direction = pf->direction;
tft->pf[i].precedence = pf->precedence - 1; tft->pf[i].precedence = pf->precedence - 1;
@ -121,7 +121,7 @@ void smf_bearer_binding(smf_sess_t *sess)
for (i = 0; i < sess->policy.num_of_pcc_rule; i++) { for (i = 0; i < sess->policy.num_of_pcc_rule; i++) {
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
smf_bearer_t *bearer = NULL; smf_bearer_t *bearer = NULL;
ogs_pcc_rule_t *pcc_rule = &sess->policy.pcc_rule[i]; ogs_pcc_rule_t *pcc_rule = &sess->policy.pcc_rule[i];
@ -245,7 +245,7 @@ void smf_bearer_binding(smf_sess_t *sess)
/* /*
* We only use the method of adding a flow to an existing tft. * We only use the method of adding a flow to an existing tft.
* *
* EPC: OGS_GTP_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT * EPC: OGS_GTP2_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT
* 5GC: OGS_NAS_QOS_CODE_MODIFY_EXISTING_QOS_RULE_AND_ADD_PACKET_FILTERS * 5GC: OGS_NAS_QOS_CODE_MODIFY_EXISTING_QOS_RULE_AND_ADD_PACKET_FILTERS
*/ */
ogs_list_init(&bearer->pf_to_add_list); ogs_list_init(&bearer->pf_to_add_list);
@ -336,19 +336,19 @@ void smf_bearer_binding(smf_sess_t *sess)
smf_epc_pfcp_send_bearer_modification_request( smf_epc_pfcp_send_bearer_modification_request(
bearer, NULL, OGS_PFCP_MODIFY_CREATE, bearer, NULL, OGS_PFCP_MODIFY_CREATE,
OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED, OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED,
OGS_GTP_CAUSE_UNDEFINED_VALUE)); OGS_GTP2_CAUSE_UNDEFINED_VALUE));
} else { } else {
ogs_gtp_tft_t tft; ogs_gtp2_tft_t tft;
memset(&tft, 0, sizeof tft); memset(&tft, 0, sizeof tft);
if (ogs_list_count(&bearer->pf_to_add_list) > 0) { if (ogs_list_count(&bearer->pf_to_add_list) > 0) {
encode_traffic_flow_template( encode_traffic_flow_template(
&tft, bearer, &tft, bearer,
OGS_GTP_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT); OGS_GTP2_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT);
} }
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_UPDATE_BEARER_REQUEST_TYPE; h.type = OGS_GTP2_UPDATE_BEARER_REQUEST_TYPE;
h.teid = sess->sgw_s5c_teid; h.teid = sess->sgw_s5c_teid;
pkbuf = smf_s5c_build_update_bearer_request( pkbuf = smf_s5c_build_update_bearer_request(
@ -395,7 +395,7 @@ void smf_bearer_binding(smf_sess_t *sess)
bearer, NULL, bearer, NULL,
OGS_PFCP_MODIFY_DL_ONLY|OGS_PFCP_MODIFY_DEACTIVATE, OGS_PFCP_MODIFY_DL_ONLY|OGS_PFCP_MODIFY_DEACTIVATE,
OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED, OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED,
OGS_GTP_CAUSE_UNDEFINED_VALUE)); OGS_GTP2_CAUSE_UNDEFINED_VALUE));
} else { } else {
ogs_error("Invalid Type[%d]", pcc_rule->type); ogs_error("Invalid Type[%d]", pcc_rule->type);
} }
@ -409,19 +409,19 @@ int smf_gtp_send_create_bearer_request(smf_bearer_t *bearer)
smf_sess_t *sess = NULL; smf_sess_t *sess = NULL;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_tft_t tft; ogs_gtp2_tft_t tft;
ogs_assert(bearer); ogs_assert(bearer);
sess = bearer->sess; sess = bearer->sess;
ogs_assert(sess); ogs_assert(sess);
h.type = OGS_GTP_CREATE_BEARER_REQUEST_TYPE; h.type = OGS_GTP2_CREATE_BEARER_REQUEST_TYPE;
h.teid = sess->sgw_s5c_teid; h.teid = sess->sgw_s5c_teid;
memset(&tft, 0, sizeof tft); memset(&tft, 0, sizeof tft);
encode_traffic_flow_template(&tft, bearer, OGS_GTP_TFT_CODE_CREATE_NEW_TFT); encode_traffic_flow_template(&tft, bearer, OGS_GTP2_TFT_CODE_CREATE_NEW_TFT);
pkbuf = smf_s5c_build_create_bearer_request(h.type, bearer, &tft); pkbuf = smf_s5c_build_create_bearer_request(h.type, bearer, &tft);
ogs_expect_or_return_val(pkbuf, OGS_ERROR); ogs_expect_or_return_val(pkbuf, OGS_ERROR);
@ -540,7 +540,7 @@ void smf_qos_flow_binding(smf_sess_t *sess)
/* /*
* We only use the method of adding a flow to an existing tft. * We only use the method of adding a flow to an existing tft.
* *
* EPC: OGS_GTP_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT * EPC: OGS_GTP2_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT
* 5GC: OGS_NAS_QOS_CODE_MODIFY_EXISTING_QOS_RULE_AND_ADD_PACKET_FILTERS * 5GC: OGS_NAS_QOS_CODE_MODIFY_EXISTING_QOS_RULE_AND_ADD_PACKET_FILTERS
*/ */
ogs_list_init(&qos_flow->pf_to_add_list); ogs_list_init(&qos_flow->pf_to_add_list);

View File

@ -934,14 +934,14 @@ static bool compare_ue_info(ogs_pfcp_node_t *node, smf_sess_t *sess)
if (ogs_strcasecmp(node->dnn[i], sess->session.name) == 0) return true; if (ogs_strcasecmp(node->dnn[i], sess->session.name) == 0) return true;
for (i = 0; i < node->num_of_e_cell_id; i++) for (i = 0; i < node->num_of_e_cell_id; i++)
if (sess->gtp_rat_type == OGS_GTP_RAT_TYPE_EUTRAN && if (sess->gtp_rat_type == OGS_GTP2_RAT_TYPE_EUTRAN &&
node->e_cell_id[i] == sess->e_cgi.cell_id) return true; node->e_cell_id[i] == sess->e_cgi.cell_id) return true;
for (i = 0; i < node->num_of_nr_cell_id; i++) for (i = 0; i < node->num_of_nr_cell_id; i++)
if (node->nr_cell_id[i] == sess->nr_cgi.cell_id) return true; if (node->nr_cell_id[i] == sess->nr_cgi.cell_id) return true;
for (i = 0; i < node->num_of_tac; i++) for (i = 0; i < node->num_of_tac; i++)
if ((sess->gtp_rat_type == OGS_GTP_RAT_TYPE_EUTRAN && if ((sess->gtp_rat_type == OGS_GTP2_RAT_TYPE_EUTRAN &&
node->tac[i] == sess->e_tai.tac) || node->tac[i] == sess->e_tai.tac) ||
(node->tac[i] == sess->nr_tai.tac.v)) return true; (node->tac[i] == sess->nr_tai.tac.v)) return true;
@ -1144,13 +1144,13 @@ smf_sess_t *smf_sess_add_by_gtp1_message(ogs_gtp1_message_t *message)
return sess; return sess;
} }
smf_sess_t *smf_sess_add_by_gtp_message(ogs_gtp_message_t *message) smf_sess_t *smf_sess_add_by_gtp_message(ogs_gtp2_message_t *message)
{ {
smf_ue_t *smf_ue = NULL; smf_ue_t *smf_ue = NULL;
smf_sess_t *sess = NULL; smf_sess_t *sess = NULL;
char apn[OGS_MAX_APN_LEN+1]; char apn[OGS_MAX_APN_LEN+1];
ogs_gtp_create_session_request_t *req = &message->create_session_request; ogs_gtp2_create_session_request_t *req = &message->create_session_request;
if (req->imsi.presence == 0) { if (req->imsi.presence == 0) {
ogs_error("No IMSI"); ogs_error("No IMSI");

View File

@ -395,7 +395,7 @@ smf_ue_t *smf_ue_find_by_supi(char *supi);
smf_ue_t *smf_ue_find_by_imsi(uint8_t *imsi, int imsi_len); smf_ue_t *smf_ue_find_by_imsi(uint8_t *imsi, int imsi_len);
smf_sess_t *smf_sess_add_by_gtp1_message(ogs_gtp1_message_t *message); smf_sess_t *smf_sess_add_by_gtp1_message(ogs_gtp1_message_t *message);
smf_sess_t *smf_sess_add_by_gtp_message(ogs_gtp_message_t *message); smf_sess_t *smf_sess_add_by_gtp_message(ogs_gtp2_message_t *message);
smf_sess_t *smf_sess_add_by_apn(smf_ue_t *smf_ue, char *apn, uint8_t rat_type); smf_sess_t *smf_sess_add_by_apn(smf_ue_t *smf_ue, char *apn, uint8_t rat_type);
smf_sess_t *smf_sess_add_by_sbi_message(ogs_sbi_message_t *message); smf_sess_t *smf_sess_add_by_sbi_message(ogs_sbi_message_t *message);

View File

@ -164,7 +164,7 @@ ogs_pkbuf_t *smf_gn_build_create_pdp_context_response(
rsp->charging_id.u32 = sess->charging.id; rsp->charging_id.u32 = sess->charging.id;
/* End User Address */ /* End User Address */
rv = ogs_gtp_paa_to_ip(&sess->session.paa, &ip_eua); rv = ogs_gtp2_paa_to_ip(&sess->session.paa, &ip_eua);
rv = ogs_gtp1_ip_to_eua(sess->session.paa.session_type, &ip_eua, &eua, rv = ogs_gtp1_ip_to_eua(sess->session.paa.session_type, &ip_eua, &eua,
&eua_len); &eua_len);
rsp->end_user_address.presence = 1; rsp->end_user_address.presence = 1;

View File

@ -392,7 +392,7 @@ void smf_gn_handle_update_pdp_context_request(
* https://github.com/open5gs/open5gs/issues/1367 * https://github.com/open5gs/open5gs/issues/1367
*/ */
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP1_UPDATE_PDP_CONTEXT_RESPONSE_TYPE; h.type = OGS_GTP1_UPDATE_PDP_CONTEXT_RESPONSE_TYPE;
h.teid = sess->sgw_s5c_teid; h.teid = sess->sgw_s5c_teid;

View File

@ -72,7 +72,7 @@ static void _gtpv1v2_c_recv_cb(short when, ogs_socket_t fd, void *data)
ogs_pkbuf_trim(pkbuf, size); ogs_pkbuf_trim(pkbuf, size);
gtp_ver = ((ogs_gtp_header_t *)pkbuf->data)->version; gtp_ver = ((ogs_gtp2_header_t *)pkbuf->data)->version;
switch (gtp_ver) { switch (gtp_ver) {
case 1: case 1:
e = smf_event_new(SMF_EVT_GN_MESSAGE); e = smf_event_new(SMF_EVT_GN_MESSAGE);
@ -113,7 +113,7 @@ static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_sockaddr_t from; ogs_sockaddr_t from;
ogs_gtp_header_t *gtp_h = NULL; ogs_gtp2_header_t *gtp_h = NULL;
uint32_t teid; uint32_t teid;
uint8_t qfi; uint8_t qfi;
@ -136,8 +136,8 @@ static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
ogs_assert(pkbuf); ogs_assert(pkbuf);
ogs_assert(pkbuf->len); ogs_assert(pkbuf->len);
gtp_h = (ogs_gtp_header_t *)pkbuf->data; gtp_h = (ogs_gtp2_header_t *)pkbuf->data;
if (gtp_h->version != OGS_GTP_VERSION_1) { if (gtp_h->version != OGS_GTP2_VERSION_1) {
ogs_error("[DROP] Invalid GTPU version [%d]", gtp_h->version); ogs_error("[DROP] Invalid GTPU version [%d]", gtp_h->version);
ogs_log_hexdump(OGS_LOG_ERROR, pkbuf->data, pkbuf->len); ogs_log_hexdump(OGS_LOG_ERROR, pkbuf->data, pkbuf->len);
goto cleanup; goto cleanup;
@ -147,7 +147,7 @@ static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
ogs_pkbuf_t *echo_rsp; ogs_pkbuf_t *echo_rsp;
ogs_debug("[RECV] Echo Request from [%s]", OGS_ADDR(&from, buf)); ogs_debug("[RECV] Echo Request from [%s]", OGS_ADDR(&from, buf));
echo_rsp = ogs_gtp_handle_echo_req(pkbuf); echo_rsp = ogs_gtp2_handle_echo_req(pkbuf);
ogs_expect(echo_rsp); ogs_expect(echo_rsp);
if (echo_rsp) { if (echo_rsp) {
ssize_t sent; ssize_t sent;
@ -180,13 +180,13 @@ static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
* Note 4 : For a GTP-PDU with several Extension Headers, the PDU * Note 4 : For a GTP-PDU with several Extension Headers, the PDU
* Session Container should be the first Extension Header * Session Container should be the first Extension Header
*/ */
ogs_gtp_extension_header_t *extension_header = ogs_gtp2_extension_header_t *extension_header =
(ogs_gtp_extension_header_t *)(pkbuf->data + OGS_GTPV1U_HEADER_LEN); (ogs_gtp2_extension_header_t *)(pkbuf->data + OGS_GTPV1U_HEADER_LEN);
ogs_assert(extension_header); ogs_assert(extension_header);
if (extension_header->type == if (extension_header->type ==
OGS_GTP_EXTENSION_HEADER_TYPE_PDU_SESSION_CONTAINER) { OGS_GTP2_EXTENSION_HEADER_TYPE_PDU_SESSION_CONTAINER) {
if (extension_header->pdu_type == if (extension_header->pdu_type ==
OGS_GTP_EXTENSION_HEADER_PDU_TYPE_UL_PDU_SESSION_INFORMATION) { OGS_GTP2_EXTENSION_HEADER_PDU_TYPE_UL_PDU_SESSION_INFORMATION) {
ogs_debug(" QFI [0x%x]", ogs_debug(" QFI [0x%x]",
extension_header->qos_flow_identifier); extension_header->qos_flow_identifier);
qfi = extension_header->qos_flow_identifier; qfi = extension_header->qos_flow_identifier;
@ -431,14 +431,14 @@ int smf_gtp_send_create_session_response(
smf_sess_t *sess, ogs_gtp_xact_t *xact) smf_sess_t *sess, ogs_gtp_xact_t *xact)
{ {
int rv; int rv;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_assert(sess); ogs_assert(sess);
ogs_assert(xact); ogs_assert(xact);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_CREATE_SESSION_RESPONSE_TYPE; h.type = OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE;
h.teid = sess->sgw_s5c_teid; h.teid = sess->sgw_s5c_teid;
pkbuf = smf_s5c_build_create_session_response(h.type, sess); pkbuf = smf_s5c_build_create_session_response(h.type, sess);
@ -457,14 +457,14 @@ int smf_gtp_send_delete_session_response(
smf_sess_t *sess, ogs_gtp_xact_t *xact) smf_sess_t *sess, ogs_gtp_xact_t *xact)
{ {
int rv; int rv;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_assert(xact); ogs_assert(xact);
ogs_assert(sess); ogs_assert(sess);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_DELETE_SESSION_RESPONSE_TYPE; h.type = OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE;
h.teid = sess->sgw_s5c_teid; h.teid = sess->sgw_s5c_teid;
pkbuf = smf_s5c_build_delete_session_response(h.type, sess); pkbuf = smf_s5c_build_delete_session_response(h.type, sess);
@ -485,7 +485,7 @@ int smf_gtp_send_delete_bearer_request(
int rv; int rv;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
smf_sess_t *sess = NULL; smf_sess_t *sess = NULL;
@ -494,8 +494,8 @@ int smf_gtp_send_delete_bearer_request(
sess = bearer->sess; sess = bearer->sess;
ogs_assert(sess); ogs_assert(sess);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_DELETE_BEARER_REQUEST_TYPE; h.type = OGS_GTP2_DELETE_BEARER_REQUEST_TYPE;
h.teid = sess->sgw_s5c_teid; h.teid = sess->sgw_s5c_teid;
pkbuf = smf_s5c_build_delete_bearer_request( pkbuf = smf_s5c_build_delete_bearer_request(
@ -629,8 +629,8 @@ static void send_router_advertisement(smf_sess_t *sess, uint8_t *ip6_dst)
ogs_list_for_each(&sess->pfcp.pdr_list, pdr) { ogs_list_for_each(&sess->pfcp.pdr_list, pdr) {
if (pdr->src_if == OGS_PFCP_INTERFACE_CP_FUNCTION && pdr->gnode) { if (pdr->src_if == OGS_PFCP_INTERFACE_CP_FUNCTION && pdr->gnode) {
ogs_gtp_header_t gtp_hdesc; ogs_gtp2_header_t gtp_hdesc;
ogs_gtp_extension_header_t ext_hdesc; ogs_gtp2_extension_header_t ext_hdesc;
ogs_pkbuf_t *newbuf = NULL; ogs_pkbuf_t *newbuf = NULL;
memset(&gtp_hdesc, 0, sizeof(gtp_hdesc)); memset(&gtp_hdesc, 0, sizeof(gtp_hdesc));
@ -642,7 +642,7 @@ static void send_router_advertisement(smf_sess_t *sess, uint8_t *ip6_dst)
newbuf = ogs_pkbuf_copy(pkbuf); newbuf = ogs_pkbuf_copy(pkbuf);
ogs_assert(newbuf); ogs_assert(newbuf);
ogs_gtp_send_user_plane(pdr->gnode, &gtp_hdesc, &ext_hdesc, newbuf); ogs_gtp2_send_user_plane(pdr->gnode, &gtp_hdesc, &ext_hdesc, newbuf);
ogs_debug(" Send Router Advertisement"); ogs_debug(" Send Router Advertisement");
break; break;
@ -668,7 +668,7 @@ static void bearer_timeout(ogs_gtp_xact_t *xact, void *data)
type = xact->seq[0].type; type = xact->seq[0].type;
switch (type) { switch (type) {
case OGS_GTP_DELETE_BEARER_REQUEST_TYPE: case OGS_GTP2_DELETE_BEARER_REQUEST_TYPE:
ogs_error("[%s] No Delete Bearer Response", smf_ue->imsi_bcd); ogs_error("[%s] No Delete Bearer Response", smf_ue->imsi_bcd);
if (!smf_bearer_cycle(bearer)) { if (!smf_bearer_cycle(bearer)) {
ogs_warn("[%s] Bearer has already been removed", smf_ue->imsi_bcd); ogs_warn("[%s] Bearer has already been removed", smf_ue->imsi_bcd);
@ -679,7 +679,7 @@ static void bearer_timeout(ogs_gtp_xact_t *xact, void *data)
smf_epc_pfcp_send_bearer_modification_request( smf_epc_pfcp_send_bearer_modification_request(
bearer, NULL, OGS_PFCP_MODIFY_REMOVE, bearer, NULL, OGS_PFCP_MODIFY_REMOVE,
OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED, OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED,
OGS_GTP_CAUSE_UNDEFINED_VALUE)); OGS_GTP2_CAUSE_UNDEFINED_VALUE));
break; break;
default: default:
ogs_error("GTP Timeout : IMSI[%s] Message-Type[%d]", ogs_error("GTP Timeout : IMSI[%s] Message-Type[%d]",

View File

@ -33,14 +33,14 @@ static uint8_t gtp_cause_from_diameter(
if (dia_err) { if (dia_err) {
switch (*dia_err) { switch (*dia_err) {
case OGS_DIAM_UNKNOWN_SESSION_ID: case OGS_DIAM_UNKNOWN_SESSION_ID:
return OGS_GTP_CAUSE_APN_ACCESS_DENIED_NO_SUBSCRIPTION; return OGS_GTP2_CAUSE_APN_ACCESS_DENIED_NO_SUBSCRIPTION;
} }
} }
ogs_error("Unexpected Diameter Result Code %d/%d, defaulting to severe " ogs_error("Unexpected Diameter Result Code %d/%d, defaulting to severe "
"network failure", "network failure",
dia_err ? *dia_err : -1, dia_exp_err ? *dia_exp_err : -1); dia_err ? *dia_err : -1, dia_exp_err ? *dia_exp_err : -1);
return OGS_GTP_CAUSE_UE_NOT_AUTHORISED_BY_OCS_OR_EXTERNAL_AAA_SERVER; return OGS_GTP2_CAUSE_UE_NOT_AUTHORISED_BY_OCS_OR_EXTERNAL_AAA_SERVER;
} }
void smf_gx_handle_cca_initial_request( void smf_gx_handle_cca_initial_request(
@ -76,8 +76,8 @@ void smf_gx_handle_cca_initial_request(
ogs_gtp1_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp1_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP1_CREATE_PDP_CONTEXT_RESPONSE_TYPE, cause_value); OGS_GTP1_CREATE_PDP_CONTEXT_RESPONSE_TYPE, cause_value);
else else
ogs_gtp_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp2_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -292,8 +292,8 @@ void smf_gx_handle_cca_initial_request(
OGS_GTP1_CAUSE_NO_RESOURCES_AVAILABLE); OGS_GTP1_CAUSE_NO_RESOURCES_AVAILABLE);
else else
ogs_gtp2_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp2_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE,
OGS_GTP_CAUSE_UE_NOT_AUTHORISED_BY_OCS_OR_EXTERNAL_AAA_SERVER); OGS_GTP2_CAUSE_UE_NOT_AUTHORISED_BY_OCS_OR_EXTERNAL_AAA_SERVER);
return; return;
} }
} }

View File

@ -361,13 +361,13 @@ void smf_gx_send_ccr(smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_assert(ret == 0); ogs_assert(ret == 0);
switch (sess->gtp_rat_type) { switch (sess->gtp_rat_type) {
case OGS_GTP_RAT_TYPE_UTRAN: case OGS_GTP2_RAT_TYPE_UTRAN:
case OGS_GTP_RAT_TYPE_GERAN: case OGS_GTP2_RAT_TYPE_GERAN:
case OGS_GTP_RAT_TYPE_HSPA_EVOLUTION: case OGS_GTP2_RAT_TYPE_HSPA_EVOLUTION:
case OGS_GTP_RAT_TYPE_EUTRAN: case OGS_GTP2_RAT_TYPE_EUTRAN:
val.i32 = OGS_DIAM_GX_IP_CAN_TYPE_3GPP_EPS; val.i32 = OGS_DIAM_GX_IP_CAN_TYPE_3GPP_EPS;
break; break;
case OGS_GTP_RAT_TYPE_WLAN: case OGS_GTP2_RAT_TYPE_WLAN:
val.i32 = OGS_DIAM_GX_IP_CAN_TYPE_NON_3GPP_EPS; val.i32 = OGS_DIAM_GX_IP_CAN_TYPE_NON_3GPP_EPS;
break; break;
default: default:
@ -385,19 +385,19 @@ void smf_gx_send_ccr(smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_assert(ret == 0); ogs_assert(ret == 0);
switch (sess->gtp_rat_type) { switch (sess->gtp_rat_type) {
case OGS_GTP_RAT_TYPE_UTRAN: case OGS_GTP2_RAT_TYPE_UTRAN:
val.i32 = OGS_DIAM_RAT_TYPE_UTRAN; val.i32 = OGS_DIAM_RAT_TYPE_UTRAN;
break; break;
case OGS_GTP_RAT_TYPE_GERAN: case OGS_GTP2_RAT_TYPE_GERAN:
val.i32 = OGS_DIAM_RAT_TYPE_GERAN; val.i32 = OGS_DIAM_RAT_TYPE_GERAN;
break; break;
case OGS_GTP_RAT_TYPE_HSPA_EVOLUTION: case OGS_GTP2_RAT_TYPE_HSPA_EVOLUTION:
val.i32 = OGS_DIAM_RAT_TYPE_HSPA_EVOLUTION; val.i32 = OGS_DIAM_RAT_TYPE_HSPA_EVOLUTION;
break; break;
case OGS_GTP_RAT_TYPE_EUTRAN: case OGS_GTP2_RAT_TYPE_EUTRAN:
val.i32 = OGS_DIAM_RAT_TYPE_EUTRAN; val.i32 = OGS_DIAM_RAT_TYPE_EUTRAN;
break; break;
case OGS_GTP_RAT_TYPE_WLAN: case OGS_GTP2_RAT_TYPE_WLAN:
val.i32 = OGS_DIAM_RAT_TYPE_WLAN; val.i32 = OGS_DIAM_RAT_TYPE_WLAN;
break; break;
default: default:
@ -489,12 +489,12 @@ void smf_gx_send_ccr(smf_sess_t *sess, ogs_gtp_xact_t *xact,
/* Set 3GPP-User-Location-Info */ /* Set 3GPP-User-Location-Info */
if (sess->gtp.user_location_information.presence) { if (sess->gtp.user_location_information.presence) {
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
int16_t uli_len; int16_t uli_len;
uint8_t uli_buf[OGS_GTP_MAX_ULI_LEN]; uint8_t uli_buf[OGS_GTP2_MAX_ULI_LEN];
uli_len = ogs_gtp_parse_uli( uli_len = ogs_gtp2_parse_uli(
&uli, &sess->gtp.user_location_information); &uli, &sess->gtp.user_location_information);
ogs_assert(sess->gtp.user_location_information.len == uli_len); ogs_assert(sess->gtp.user_location_information.len == uli_len);

View File

@ -32,14 +32,14 @@ static uint8_t gtp_cause_from_diameter(
if (dia_err) { if (dia_err) {
switch (*dia_err) { switch (*dia_err) {
case OGS_DIAM_UNKNOWN_SESSION_ID: case OGS_DIAM_UNKNOWN_SESSION_ID:
return OGS_GTP_CAUSE_APN_ACCESS_DENIED_NO_SUBSCRIPTION; return OGS_GTP2_CAUSE_APN_ACCESS_DENIED_NO_SUBSCRIPTION;
} }
} }
ogs_error("Unexpected Diameter Result Code %d/%d, defaulting to severe " ogs_error("Unexpected Diameter Result Code %d/%d, defaulting to severe "
"network failure", "network failure",
dia_err ? *dia_err : -1, dia_exp_err ? *dia_exp_err : -1); dia_err ? *dia_err : -1, dia_exp_err ? *dia_exp_err : -1);
return OGS_GTP_CAUSE_UE_NOT_AUTHORISED_BY_OCS_OR_EXTERNAL_AAA_SERVER; return OGS_GTP2_CAUSE_UE_NOT_AUTHORISED_BY_OCS_OR_EXTERNAL_AAA_SERVER;
} }
static void urr_enable_total_volume_threshold(smf_sess_t *sess, ogs_pfcp_urr_t *urr, static void urr_enable_total_volume_threshold(smf_sess_t *sess, ogs_pfcp_urr_t *urr,
@ -118,8 +118,8 @@ void smf_gy_handle_cca_initial_request(
ogs_gtp1_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp1_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP1_CREATE_PDP_CONTEXT_RESPONSE_TYPE, cause_value); OGS_GTP1_CREATE_PDP_CONTEXT_RESPONSE_TYPE, cause_value);
else else
ogs_gtp_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp2_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
return; return;
} }

View File

@ -526,12 +526,12 @@ void smf_gy_send_ccr(smf_sess_t *sess, void *xact,
/* 3GPP-User-Location-Info */ /* 3GPP-User-Location-Info */
if (sess->gtp.user_location_information.presence) { if (sess->gtp.user_location_information.presence) {
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
int16_t uli_len; int16_t uli_len;
uint8_t uli_buf[OGS_GTP_MAX_ULI_LEN]; uint8_t uli_buf[OGS_GTP2_MAX_ULI_LEN];
uli_len = ogs_gtp_parse_uli( uli_len = ogs_gtp2_parse_uli(
&uli, &sess->gtp.user_location_information); &uli, &sess->gtp.user_location_information);
ogs_assert(sess->gtp.user_location_information.len == uli_len); ogs_assert(sess->gtp.user_location_information.len == uli_len);

View File

@ -70,43 +70,43 @@ uint8_t gtp_cause_from_pfcp(uint8_t pfcp_cause, uint8_t gtp_version)
case 2: case 2:
switch (pfcp_cause) { switch (pfcp_cause) {
case OGS_PFCP_CAUSE_REQUEST_ACCEPTED: case OGS_PFCP_CAUSE_REQUEST_ACCEPTED:
return OGS_GTP_CAUSE_REQUEST_ACCEPTED; return OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
case OGS_PFCP_CAUSE_REQUEST_REJECTED: case OGS_PFCP_CAUSE_REQUEST_REJECTED:
return OGS_GTP_CAUSE_REQUEST_REJECTED_REASON_NOT_SPECIFIED; return OGS_GTP2_CAUSE_REQUEST_REJECTED_REASON_NOT_SPECIFIED;
case OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND: case OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND:
return OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; return OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
case OGS_PFCP_CAUSE_MANDATORY_IE_MISSING: case OGS_PFCP_CAUSE_MANDATORY_IE_MISSING:
return OGS_GTP_CAUSE_MANDATORY_IE_MISSING; return OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
case OGS_PFCP_CAUSE_CONDITIONAL_IE_MISSING: case OGS_PFCP_CAUSE_CONDITIONAL_IE_MISSING:
return OGS_GTP_CAUSE_CONDITIONAL_IE_MISSING; return OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING;
case OGS_PFCP_CAUSE_INVALID_LENGTH: case OGS_PFCP_CAUSE_INVALID_LENGTH:
return OGS_GTP_CAUSE_INVALID_LENGTH; return OGS_GTP2_CAUSE_INVALID_LENGTH;
case OGS_PFCP_CAUSE_MANDATORY_IE_INCORRECT: case OGS_PFCP_CAUSE_MANDATORY_IE_INCORRECT:
return OGS_GTP_CAUSE_MANDATORY_IE_INCORRECT; return OGS_GTP2_CAUSE_MANDATORY_IE_INCORRECT;
case OGS_PFCP_CAUSE_INVALID_FORWARDING_POLICY: case OGS_PFCP_CAUSE_INVALID_FORWARDING_POLICY:
case OGS_PFCP_CAUSE_INVALID_F_TEID_ALLOCATION_OPTION: case OGS_PFCP_CAUSE_INVALID_F_TEID_ALLOCATION_OPTION:
return OGS_GTP_CAUSE_INVALID_MESSAGE_FORMAT; return OGS_GTP2_CAUSE_INVALID_MESSAGE_FORMAT;
case OGS_PFCP_CAUSE_NO_ESTABLISHED_PFCP_ASSOCIATION: case OGS_PFCP_CAUSE_NO_ESTABLISHED_PFCP_ASSOCIATION:
return OGS_GTP_CAUSE_REMOTE_PEER_NOT_RESPONDING; return OGS_GTP2_CAUSE_REMOTE_PEER_NOT_RESPONDING;
case OGS_PFCP_CAUSE_RULE_CREATION_MODIFICATION_FAILURE: case OGS_PFCP_CAUSE_RULE_CREATION_MODIFICATION_FAILURE:
return OGS_GTP_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION; return OGS_GTP2_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION;
case OGS_PFCP_CAUSE_PFCP_ENTITY_IN_CONGESTION: case OGS_PFCP_CAUSE_PFCP_ENTITY_IN_CONGESTION:
return OGS_GTP_CAUSE_GTP_C_ENTITY_CONGESTION; return OGS_GTP2_CAUSE_GTP_C_ENTITY_CONGESTION;
case OGS_PFCP_CAUSE_NO_RESOURCES_AVAILABLE: case OGS_PFCP_CAUSE_NO_RESOURCES_AVAILABLE:
return OGS_GTP_CAUSE_NO_RESOURCES_AVAILABLE; return OGS_GTP2_CAUSE_NO_RESOURCES_AVAILABLE;
case OGS_PFCP_CAUSE_SERVICE_NOT_SUPPORTED: case OGS_PFCP_CAUSE_SERVICE_NOT_SUPPORTED:
return OGS_GTP_CAUSE_SERVICE_NOT_SUPPORTED; return OGS_GTP2_CAUSE_SERVICE_NOT_SUPPORTED;
case OGS_PFCP_CAUSE_SYSTEM_FAILURE: case OGS_PFCP_CAUSE_SYSTEM_FAILURE:
return OGS_GTP_CAUSE_SYSTEM_FAILURE; return OGS_GTP2_CAUSE_SYSTEM_FAILURE;
case OGS_PFCP_CAUSE_ALL_DYNAMIC_ADDRESS_ARE_OCCUPIED: case OGS_PFCP_CAUSE_ALL_DYNAMIC_ADDRESS_ARE_OCCUPIED:
return OGS_GTP_CAUSE_ALL_DYNAMIC_ADDRESSES_ARE_OCCUPIED; return OGS_GTP2_CAUSE_ALL_DYNAMIC_ADDRESSES_ARE_OCCUPIED;
default: default:
return OGS_GTP_CAUSE_SYSTEM_FAILURE; return OGS_GTP2_CAUSE_SYSTEM_FAILURE;
} }
break; break;
} }
return OGS_GTP_CAUSE_SYSTEM_FAILURE; return OGS_GTP2_CAUSE_SYSTEM_FAILURE;
} }
static int sbi_status_from_pfcp(uint8_t pfcp_cause) static int sbi_status_from_pfcp(uint8_t pfcp_cause)
@ -749,29 +749,29 @@ void smf_epc_n4_handle_session_establishment_response(
cause_value = OGS_GTP1_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP1_CAUSE_REQUEST_ACCEPTED;
resp_type = OGS_GTP1_CREATE_PDP_CONTEXT_RESPONSE_TYPE; resp_type = OGS_GTP1_CREATE_PDP_CONTEXT_RESPONSE_TYPE;
} else { } else {
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
resp_type = OGS_GTP_CREATE_SESSION_RESPONSE_TYPE; resp_type = OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE;
} }
if (!sess) { if (!sess) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = (gtp_xact->gtp_version == 1) ? cause_value = (gtp_xact->gtp_version == 1) ?
OGS_GTP1_CAUSE_CONTEXT_NOT_FOUND : OGS_GTP1_CAUSE_CONTEXT_NOT_FOUND :
OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (rsp->up_f_seid.presence == 0) { if (rsp->up_f_seid.presence == 0) {
ogs_error("No UP F-SEID"); ogs_error("No UP F-SEID");
cause_value = (gtp_xact->gtp_version == 1) ? cause_value = (gtp_xact->gtp_version == 1) ?
OGS_GTP1_CAUSE_MANDATORY_IE_MISSING : OGS_GTP1_CAUSE_MANDATORY_IE_MISSING :
OGS_GTP_CAUSE_MANDATORY_IE_MISSING; OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->created_pdr[0].presence == 0) { if (rsp->created_pdr[0].presence == 0) {
ogs_error("No Created PDR"); ogs_error("No Created PDR");
cause_value = (gtp_xact->gtp_version == 1) ? cause_value = (gtp_xact->gtp_version == 1) ?
OGS_GTP1_CAUSE_MANDATORY_IE_MISSING : OGS_GTP1_CAUSE_MANDATORY_IE_MISSING :
OGS_GTP_CAUSE_MANDATORY_IE_MISSING; OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->cause.presence) { if (rsp->cause.presence) {
@ -783,11 +783,11 @@ void smf_epc_n4_handle_session_establishment_response(
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = (gtp_xact->gtp_version == 1) ? cause_value = (gtp_xact->gtp_version == 1) ?
OGS_GTP1_CAUSE_MANDATORY_IE_MISSING : OGS_GTP1_CAUSE_MANDATORY_IE_MISSING :
OGS_GTP_CAUSE_MANDATORY_IE_MISSING; OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if ((gtp_xact->gtp_version == 1 && cause_value == OGS_GTP1_CAUSE_REQUEST_ACCEPTED) || if ((gtp_xact->gtp_version == 1 && cause_value == OGS_GTP1_CAUSE_REQUEST_ACCEPTED) ||
(gtp_xact->gtp_version == 2 && cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED)) { (gtp_xact->gtp_version == 2 && cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED)) {
int i; int i;
uint8_t pfcp_cause_value = OGS_PFCP_CAUSE_REQUEST_ACCEPTED; uint8_t pfcp_cause_value = OGS_PFCP_CAUSE_REQUEST_ACCEPTED;
@ -842,7 +842,7 @@ void smf_epc_n4_handle_session_establishment_response(
if ((gtp_xact->gtp_version == 1 && cause_value != OGS_GTP1_CAUSE_REQUEST_ACCEPTED) || if ((gtp_xact->gtp_version == 1 && cause_value != OGS_GTP1_CAUSE_REQUEST_ACCEPTED) ||
(gtp_xact->gtp_version == 2 && cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED)) { (gtp_xact->gtp_version == 2 && cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED)) {
ogs_gtp_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0,
resp_type, cause_value); resp_type, cause_value);
return; return;
@ -857,7 +857,7 @@ void smf_epc_n4_handle_session_establishment_response(
ogs_gtp_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0,
resp_type, resp_type,
(gtp_xact->gtp_version == 1) ? (gtp_xact->gtp_version == 1) ?
OGS_GTP1_CAUSE_CONTEXT_NOT_FOUND : OGS_GTP_CAUSE_GRE_KEY_NOT_FOUND); OGS_GTP1_CAUSE_CONTEXT_NOT_FOUND : OGS_GTP2_CAUSE_GRE_KEY_NOT_FOUND);
return; return;
} }
@ -875,7 +875,7 @@ void smf_epc_n4_handle_session_establishment_response(
break; break;
} }
if (sess->gtp_rat_type == OGS_GTP_RAT_TYPE_WLAN) { if (sess->gtp_rat_type == OGS_GTP2_RAT_TYPE_WLAN) {
/* /*
* TS23.214 * TS23.214
* 6.3.1.7 Procedures with modification of bearer * 6.3.1.7 Procedures with modification of bearer
@ -892,14 +892,14 @@ void smf_epc_n4_handle_session_establishment_response(
ogs_assert(smf_ue); ogs_assert(smf_ue);
eutran_sess = smf_sess_find_by_apn( eutran_sess = smf_sess_find_by_apn(
smf_ue, sess->session.name, OGS_GTP_RAT_TYPE_EUTRAN); smf_ue, sess->session.name, OGS_GTP2_RAT_TYPE_EUTRAN);
if (eutran_sess) { if (eutran_sess) {
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
smf_epc_pfcp_send_session_modification_request( smf_epc_pfcp_send_session_modification_request(
eutran_sess, NULL, eutran_sess, NULL,
OGS_PFCP_MODIFY_DL_ONLY|OGS_PFCP_MODIFY_DEACTIVATE, OGS_PFCP_MODIFY_DL_ONLY|OGS_PFCP_MODIFY_DEACTIVATE,
OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED, OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED,
OGS_GTP_CAUSE_RAT_CHANGED_FROM_3GPP_TO_NON_3GPP)); OGS_GTP2_CAUSE_RAT_CHANGED_FROM_3GPP_TO_NON_3GPP));
} }
} }
@ -915,7 +915,7 @@ void smf_epc_n4_handle_session_modification_response(
smf_bearer_t *bearer = NULL; smf_bearer_t *bearer = NULL;
ogs_gtp_xact_t *gtp_xact = NULL; ogs_gtp_xact_t *gtp_xact = NULL;
uint8_t gtp_pti = OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED; uint8_t gtp_pti = OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED;
uint8_t gtp_cause = OGS_GTP_CAUSE_UNDEFINED_VALUE; uint8_t gtp_cause = OGS_GTP2_CAUSE_UNDEFINED_VALUE;
uint64_t flags = 0; uint64_t flags = 0;
uint8_t pfcp_cause_value = OGS_PFCP_CAUSE_REQUEST_ACCEPTED; uint8_t pfcp_cause_value = OGS_PFCP_CAUSE_REQUEST_ACCEPTED;
@ -1037,15 +1037,15 @@ void smf_epc_n4_handle_session_modification_response(
* 2. SMF sends Delete Bearer Request(DEDICATED BEARER) to SGW/MME * 2. SMF sends Delete Bearer Request(DEDICATED BEARER) to SGW/MME
* 3. MME sends Delete Bearer Response(DEDICATED BEARER) to SGW/SMF * 3. MME sends Delete Bearer Response(DEDICATED BEARER) to SGW/SMF
*/ */
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
int rv; int rv;
ogs_assert(bearer); ogs_assert(bearer);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.teid = sess->sgw_s5c_teid; h.teid = sess->sgw_s5c_teid;
h.type = OGS_GTP_DELETE_BEARER_REQUEST_TYPE; h.type = OGS_GTP2_DELETE_BEARER_REQUEST_TYPE;
pkbuf = smf_s5c_build_delete_bearer_request( pkbuf = smf_s5c_build_delete_bearer_request(
h.type, bearer, gtp_pti, gtp_cause); h.type, bearer, gtp_pti, gtp_cause);
@ -1150,15 +1150,15 @@ void smf_epc_n4_handle_session_deletion_response(
resp_type = OGS_GTP1_DELETE_PDP_CONTEXT_RESPONSE_TYPE; resp_type = OGS_GTP1_DELETE_PDP_CONTEXT_RESPONSE_TYPE;
cause_value = OGS_GTP1_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP1_CAUSE_REQUEST_ACCEPTED;
} else { } else {
resp_type = OGS_GTP_DELETE_SESSION_RESPONSE_TYPE; resp_type = OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE;
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
} }
if (!sess) { if (!sess) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = (gtp_version == 1) ? cause_value = (gtp_version == 1) ?
OGS_GTP1_CAUSE_NON_EXISTENT : OGS_GTP1_CAUSE_NON_EXISTENT :
OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (rsp->cause.presence) { if (rsp->cause.presence) {
@ -1170,12 +1170,12 @@ void smf_epc_n4_handle_session_deletion_response(
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = (gtp_xact->gtp_version == 1) ? cause_value = (gtp_xact->gtp_version == 1) ?
OGS_GTP1_CAUSE_MANDATORY_IE_MISSING : OGS_GTP1_CAUSE_MANDATORY_IE_MISSING :
OGS_GTP_CAUSE_MANDATORY_IE_MISSING; OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (gtp_xact && if (gtp_xact &&
((gtp_version == 1 && cause_value != OGS_GTP1_CAUSE_REQUEST_ACCEPTED) || ((gtp_version == 1 && cause_value != OGS_GTP1_CAUSE_REQUEST_ACCEPTED) ||
(gtp_version == 2 && cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED))) { (gtp_version == 2 && cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED))) {
ogs_gtp_send_error_message(gtp_xact, sess->sgw_s5c_teid, resp_type, ogs_gtp_send_error_message(gtp_xact, sess->sgw_s5c_teid, resp_type,
cause_value); cause_value);
return; return;
@ -1265,7 +1265,7 @@ void smf_n4_handle_session_report_request(
ogs_debug("Session Report Request"); ogs_debug("Session Report Request");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (!sess) { if (!sess) {
ogs_warn("No Context"); ogs_warn("No Context");
@ -1274,10 +1274,10 @@ void smf_n4_handle_session_report_request(
if (pfcp_req->report_type.presence == 0) { if (pfcp_req->report_type.presence == 0) {
ogs_error("No Report Type"); ogs_error("No Report Type");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_pfcp_send_error_message(pfcp_xact, 0, ogs_pfcp_send_error_message(pfcp_xact, 0,
OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE, OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE,
cause_value, 0); cause_value, 0);
@ -1316,7 +1316,7 @@ void smf_n4_handle_session_report_request(
"Paging Policy Indication Value"); "Paging Policy Indication Value");
ogs_pfcp_send_error_message(pfcp_xact, 0, ogs_pfcp_send_error_message(pfcp_xact, 0,
OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE, OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE,
OGS_GTP_CAUSE_SERVICE_NOT_SUPPORTED, 0); OGS_GTP2_CAUSE_SERVICE_NOT_SUPPORTED, 0);
return; return;
} }

View File

@ -28,15 +28,15 @@ ogs_pkbuf_t *smf_s5c_build_create_session_response(
int rv; int rv;
smf_bearer_t *bearer = NULL; smf_bearer_t *bearer = NULL;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_create_session_response_t *rsp = NULL; ogs_gtp2_create_session_response_t *rsp = NULL;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_gtp_cause_t bearer_cause; ogs_gtp2_cause_t bearer_cause;
ogs_gtp_f_teid_t smf_s5c_teid, pgw_s5u_teid; ogs_gtp2_f_teid_t smf_s5c_teid, pgw_s5u_teid;
ogs_gtp_ambr_t ambr; ogs_gtp2_ambr_t ambr;
ogs_gtp_bearer_qos_t bearer_qos; ogs_gtp2_bearer_qos_t bearer_qos;
char bearer_qos_buf[GTP_BEARER_QOS_LEN]; char bearer_qos_buf[GTP2_BEARER_QOS_LEN];
int len; int len;
uint8_t pco_buf[OGS_MAX_PCO_LEN]; uint8_t pco_buf[OGS_MAX_PCO_LEN];
int16_t pco_len; int16_t pco_len;
@ -53,7 +53,7 @@ ogs_pkbuf_t *smf_s5c_build_create_session_response(
bearer->sgw_s5u_teid, bearer->pgw_s5u_teid); bearer->sgw_s5u_teid, bearer->pgw_s5u_teid);
rsp = &gtp_message.create_session_response; rsp = &gtp_message.create_session_response;
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
/* Set Cause */ /* Set Cause */
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
@ -61,25 +61,25 @@ ogs_pkbuf_t *smf_s5c_build_create_session_response(
rsp->cause.len = sizeof(cause); rsp->cause.len = sizeof(cause);
rsp->cause.data = &cause; rsp->cause.data = &cause;
cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (sess->ue_session_type != sess->session.session_type) if (sess->ue_session_type != sess->session.session_type)
cause.value = OGS_GTP_CAUSE_NEW_PDN_TYPE_DUE_TO_NETWORK_PREFERENCE; cause.value = OGS_GTP2_CAUSE_NEW_PDN_TYPE_DUE_TO_NETWORK_PREFERENCE;
/* Control Plane(UL) : SMF-S5C */ /* Control Plane(UL) : SMF-S5C */
memset(&smf_s5c_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&smf_s5c_teid, 0, sizeof(ogs_gtp2_f_teid_t));
switch (sess->gtp_rat_type) { switch (sess->gtp_rat_type) {
case OGS_GTP_RAT_TYPE_EUTRAN: case OGS_GTP2_RAT_TYPE_EUTRAN:
smf_s5c_teid.interface_type = OGS_GTP_F_TEID_S5_S8_PGW_GTP_C; smf_s5c_teid.interface_type = OGS_GTP2_F_TEID_S5_S8_PGW_GTP_C;
break; break;
case OGS_GTP_RAT_TYPE_WLAN: case OGS_GTP2_RAT_TYPE_WLAN:
smf_s5c_teid.interface_type = OGS_GTP_F_TEID_S2B_PGW_GTP_C; smf_s5c_teid.interface_type = OGS_GTP2_F_TEID_S2B_PGW_GTP_C;
break; break;
default: default:
ogs_error("Unknown RAT Type [%d]", sess->gtp_rat_type); ogs_error("Unknown RAT Type [%d]", sess->gtp_rat_type);
ogs_assert_if_reached(); ogs_assert_if_reached();
} }
smf_s5c_teid.teid = htobe32(sess->smf_n4_teid); smf_s5c_teid.teid = htobe32(sess->smf_n4_teid);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
ogs_gtp_self()->gtpc_addr, ogs_gtp_self()->gtpc_addr6, ogs_gtp_self()->gtpc_addr, ogs_gtp_self()->gtpc_addr6,
&smf_s5c_teid, &len); &smf_s5c_teid, &len);
ogs_expect_or_return_val(rv == OGS_OK, NULL); ogs_expect_or_return_val(rv == OGS_OK, NULL);
@ -104,11 +104,11 @@ ogs_pkbuf_t *smf_s5c_build_create_session_response(
/* APN Restriction */ /* APN Restriction */
switch (sess->gtp_rat_type) { switch (sess->gtp_rat_type) {
case OGS_GTP_RAT_TYPE_EUTRAN: case OGS_GTP2_RAT_TYPE_EUTRAN:
rsp->apn_restriction.presence = 1; rsp->apn_restriction.presence = 1;
rsp->apn_restriction.u8 = OGS_GTP_APN_NO_RESTRICTION; rsp->apn_restriction.u8 = OGS_GTP2_APN_NO_RESTRICTION;
break; break;
case OGS_GTP_RAT_TYPE_WLAN: case OGS_GTP2_RAT_TYPE_WLAN:
break; break;
default: default:
ogs_error("Unknown RAT Type [%d]", sess->gtp_rat_type); ogs_error("Unknown RAT Type [%d]", sess->gtp_rat_type);
@ -118,7 +118,7 @@ ogs_pkbuf_t *smf_s5c_build_create_session_response(
/* APN-AMBR /* APN-AMBR
* if PCRF changes APN-AMBR, this should be included. */ * if PCRF changes APN-AMBR, this should be included. */
if (sess->gtp.create_session_response_apn_ambr == true) { if (sess->gtp.create_session_response_apn_ambr == true) {
memset(&ambr, 0, sizeof(ogs_gtp_ambr_t)); memset(&ambr, 0, sizeof(ogs_gtp2_ambr_t));
ambr.uplink = htobe32(sess->session.ambr.uplink / 1000); ambr.uplink = htobe32(sess->session.ambr.uplink / 1000);
ambr.downlink = htobe32(sess->session.ambr.downlink / 1000); ambr.downlink = htobe32(sess->session.ambr.downlink / 1000);
rsp->aggregate_maximum_bit_rate.presence = 1; rsp->aggregate_maximum_bit_rate.presence = 1;
@ -147,7 +147,7 @@ ogs_pkbuf_t *smf_s5c_build_create_session_response(
rsp->bearer_contexts_created.cause.presence = 1; rsp->bearer_contexts_created.cause.presence = 1;
rsp->bearer_contexts_created.cause.len = sizeof(bearer_cause); rsp->bearer_contexts_created.cause.len = sizeof(bearer_cause);
rsp->bearer_contexts_created.cause.data = &bearer_cause; rsp->bearer_contexts_created.cause.data = &bearer_cause;
bearer_cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; bearer_cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
/* Bearer QoS /* Bearer QoS
* if PCRF changes Bearer QoS, this should be included. */ * if PCRF changes Bearer QoS, this should be included. */
@ -161,8 +161,8 @@ ogs_pkbuf_t *smf_s5c_build_create_session_response(
sess->session.qos.arp.pre_emption_vulnerability; sess->session.qos.arp.pre_emption_vulnerability;
rsp->bearer_contexts_created.bearer_level_qos.presence = 1; rsp->bearer_contexts_created.bearer_level_qos.presence = 1;
ogs_gtp_build_bearer_qos(&rsp->bearer_contexts_created.bearer_level_qos, ogs_gtp2_build_bearer_qos(&rsp->bearer_contexts_created.bearer_level_qos,
&bearer_qos, bearer_qos_buf, GTP_BEARER_QOS_LEN); &bearer_qos, bearer_qos_buf, GTP2_BEARER_QOS_LEN);
} }
/* Bearer Charging ID */ /* Bearer Charging ID */
@ -170,22 +170,22 @@ ogs_pkbuf_t *smf_s5c_build_create_session_response(
rsp->bearer_contexts_created.charging_id.u32 = sess->charging.id; rsp->bearer_contexts_created.charging_id.u32 = sess->charging.id;
/* Data Plane(UL) : SMF-S5U */ /* Data Plane(UL) : SMF-S5U */
memset(&pgw_s5u_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&pgw_s5u_teid, 0, sizeof(ogs_gtp2_f_teid_t));
pgw_s5u_teid.teid = htobe32(bearer->pgw_s5u_teid); pgw_s5u_teid.teid = htobe32(bearer->pgw_s5u_teid);
ogs_assert(bearer->pgw_s5u_addr || bearer->pgw_s5u_addr6); ogs_assert(bearer->pgw_s5u_addr || bearer->pgw_s5u_addr6);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
bearer->pgw_s5u_addr, bearer->pgw_s5u_addr6, &pgw_s5u_teid, &len); bearer->pgw_s5u_addr, bearer->pgw_s5u_addr6, &pgw_s5u_teid, &len);
ogs_expect_or_return_val(rv == OGS_OK, NULL); ogs_expect_or_return_val(rv == OGS_OK, NULL);
switch (sess->gtp_rat_type) { switch (sess->gtp_rat_type) {
case OGS_GTP_RAT_TYPE_EUTRAN: case OGS_GTP2_RAT_TYPE_EUTRAN:
pgw_s5u_teid.interface_type = OGS_GTP_F_TEID_S5_S8_PGW_GTP_U; pgw_s5u_teid.interface_type = OGS_GTP2_F_TEID_S5_S8_PGW_GTP_U;
rsp->bearer_contexts_created.s5_s8_u_sgw_f_teid.presence = 1; rsp->bearer_contexts_created.s5_s8_u_sgw_f_teid.presence = 1;
rsp->bearer_contexts_created.s5_s8_u_sgw_f_teid.data = &pgw_s5u_teid; rsp->bearer_contexts_created.s5_s8_u_sgw_f_teid.data = &pgw_s5u_teid;
rsp->bearer_contexts_created.s5_s8_u_sgw_f_teid.len = len; rsp->bearer_contexts_created.s5_s8_u_sgw_f_teid.len = len;
break; break;
case OGS_GTP_RAT_TYPE_WLAN: case OGS_GTP2_RAT_TYPE_WLAN:
pgw_s5u_teid.interface_type = OGS_GTP_F_TEID_S2B_U_PGW_GTP_U; pgw_s5u_teid.interface_type = OGS_GTP2_F_TEID_S2B_U_PGW_GTP_U;
rsp->bearer_contexts_created.s12_rnc_f_teid.presence = 1; rsp->bearer_contexts_created.s12_rnc_f_teid.presence = 1;
rsp->bearer_contexts_created.s12_rnc_f_teid.data = &pgw_s5u_teid; rsp->bearer_contexts_created.s12_rnc_f_teid.data = &pgw_s5u_teid;
rsp->bearer_contexts_created.s12_rnc_f_teid.len = len; rsp->bearer_contexts_created.s12_rnc_f_teid.len = len;
@ -196,25 +196,25 @@ ogs_pkbuf_t *smf_s5c_build_create_session_response(
} }
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *smf_s5c_build_delete_session_response( ogs_pkbuf_t *smf_s5c_build_delete_session_response(
uint8_t type, smf_sess_t *sess) uint8_t type, smf_sess_t *sess)
{ {
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_delete_session_response_t *rsp = NULL; ogs_gtp2_delete_session_response_t *rsp = NULL;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
uint8_t pco_buf[OGS_MAX_PCO_LEN]; uint8_t pco_buf[OGS_MAX_PCO_LEN];
int16_t pco_len; int16_t pco_len;
/* prepare cause */ /* prepare cause */
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
rsp = &gtp_message.delete_session_response; rsp = &gtp_message.delete_session_response;
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
/* Cause */ /* Cause */
rsp->cause.presence = 1; rsp->cause.presence = 1;
@ -238,26 +238,26 @@ ogs_pkbuf_t *smf_s5c_build_delete_session_response(
/* build */ /* build */
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *smf_s5c_build_modify_bearer_response( ogs_pkbuf_t *smf_s5c_build_modify_bearer_response(
uint8_t type, smf_sess_t *sess, uint8_t type, smf_sess_t *sess,
ogs_gtp_modify_bearer_request_t *req) ogs_gtp2_modify_bearer_request_t *req)
{ {
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_modify_bearer_response_t *rsp = NULL; ogs_gtp2_modify_bearer_response_t *rsp = NULL;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_assert(sess); ogs_assert(sess);
ogs_assert(req); ogs_assert(req);
rsp = &gtp_message.modify_bearer_response; rsp = &gtp_message.modify_bearer_response;
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
rsp->cause.presence = 1; rsp->cause.presence = 1;
rsp->cause.data = &cause; rsp->cause.data = &cause;
@ -279,24 +279,24 @@ ogs_pkbuf_t *smf_s5c_build_modify_bearer_response(
/* build */ /* build */
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *smf_s5c_build_create_bearer_request( ogs_pkbuf_t *smf_s5c_build_create_bearer_request(
uint8_t type, smf_bearer_t *bearer, ogs_gtp_tft_t *tft) uint8_t type, smf_bearer_t *bearer, ogs_gtp2_tft_t *tft)
{ {
int rv; int rv;
smf_sess_t *sess = NULL; smf_sess_t *sess = NULL;
smf_bearer_t *linked_bearer = NULL; smf_bearer_t *linked_bearer = NULL;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_create_bearer_request_t *req = NULL; ogs_gtp2_create_bearer_request_t *req = NULL;
ogs_gtp_f_teid_t pgw_s5u_teid; ogs_gtp2_f_teid_t pgw_s5u_teid;
ogs_gtp_bearer_qos_t bearer_qos; ogs_gtp2_bearer_qos_t bearer_qos;
char bearer_qos_buf[GTP_BEARER_QOS_LEN]; char bearer_qos_buf[GTP2_BEARER_QOS_LEN];
int len; int len;
char tft_buf[OGS_GTP_MAX_TRAFFIC_FLOW_TEMPLATE]; char tft_buf[OGS_GTP2_MAX_TRAFFIC_FLOW_TEMPLATE];
ogs_assert(bearer); ogs_assert(bearer);
sess = bearer->sess; sess = bearer->sess;
@ -309,7 +309,7 @@ ogs_pkbuf_t *smf_s5c_build_create_bearer_request(
sess->sgw_s5c_teid, sess->smf_n4_teid); sess->sgw_s5c_teid, sess->smf_n4_teid);
req = &gtp_message.create_bearer_request; req = &gtp_message.create_bearer_request;
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
/* Linked EBI */ /* Linked EBI */
req->linked_eps_bearer_id.presence = 1; req->linked_eps_bearer_id.presence = 1;
@ -321,11 +321,11 @@ ogs_pkbuf_t *smf_s5c_build_create_bearer_request(
req->bearer_contexts.eps_bearer_id.u8 = bearer->ebi; req->bearer_contexts.eps_bearer_id.u8 = bearer->ebi;
/* Data Plane(UL) : PGW-S5U */ /* Data Plane(UL) : PGW-S5U */
memset(&pgw_s5u_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&pgw_s5u_teid, 0, sizeof(ogs_gtp2_f_teid_t));
pgw_s5u_teid.interface_type = OGS_GTP_F_TEID_S5_S8_PGW_GTP_U; pgw_s5u_teid.interface_type = OGS_GTP2_F_TEID_S5_S8_PGW_GTP_U;
pgw_s5u_teid.teid = htobe32(bearer->pgw_s5u_teid); pgw_s5u_teid.teid = htobe32(bearer->pgw_s5u_teid);
ogs_assert(bearer->pgw_s5u_addr || bearer->pgw_s5u_addr6); ogs_assert(bearer->pgw_s5u_addr || bearer->pgw_s5u_addr6);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
bearer->pgw_s5u_addr, bearer->pgw_s5u_addr6, &pgw_s5u_teid, &len); bearer->pgw_s5u_addr, bearer->pgw_s5u_addr6, &pgw_s5u_teid, &len);
ogs_expect_or_return_val(rv == OGS_OK, NULL); ogs_expect_or_return_val(rv == OGS_OK, NULL);
req->bearer_contexts.s4_u_sgsn_f_teid.presence = 1; req->bearer_contexts.s4_u_sgsn_f_teid.presence = 1;
@ -346,33 +346,33 @@ ogs_pkbuf_t *smf_s5c_build_create_bearer_request(
bearer_qos.ul_gbr = bearer->qos.gbr.uplink; bearer_qos.ul_gbr = bearer->qos.gbr.uplink;
req->bearer_contexts.bearer_level_qos.presence = 1; req->bearer_contexts.bearer_level_qos.presence = 1;
ogs_gtp_build_bearer_qos(&req->bearer_contexts.bearer_level_qos, ogs_gtp2_build_bearer_qos(&req->bearer_contexts.bearer_level_qos,
&bearer_qos, bearer_qos_buf, GTP_BEARER_QOS_LEN); &bearer_qos, bearer_qos_buf, GTP2_BEARER_QOS_LEN);
/* Bearer TFT */ /* Bearer TFT */
if (tft && tft->num_of_packet_filter) { if (tft && tft->num_of_packet_filter) {
req->bearer_contexts.tft.presence = 1; req->bearer_contexts.tft.presence = 1;
ogs_gtp_build_tft(&req->bearer_contexts.tft, ogs_gtp2_build_tft(&req->bearer_contexts.tft,
tft, tft_buf, OGS_GTP_MAX_TRAFFIC_FLOW_TEMPLATE); tft, tft_buf, OGS_GTP2_MAX_TRAFFIC_FLOW_TEMPLATE);
} }
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *smf_s5c_build_update_bearer_request( ogs_pkbuf_t *smf_s5c_build_update_bearer_request(
uint8_t type, smf_bearer_t *bearer, uint8_t pti, uint8_t type, smf_bearer_t *bearer, uint8_t pti,
ogs_gtp_tft_t *tft, bool qos_presence) ogs_gtp2_tft_t *tft, bool qos_presence)
{ {
smf_sess_t *sess = NULL; smf_sess_t *sess = NULL;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_update_bearer_request_t *req = NULL; ogs_gtp2_update_bearer_request_t *req = NULL;
ogs_gtp_ambr_t ambr; ogs_gtp2_ambr_t ambr;
ogs_gtp_bearer_qos_t bearer_qos; ogs_gtp2_bearer_qos_t bearer_qos;
char bearer_qos_buf[GTP_BEARER_QOS_LEN]; char bearer_qos_buf[GTP2_BEARER_QOS_LEN];
char tft_buf[OGS_GTP_MAX_TRAFFIC_FLOW_TEMPLATE]; char tft_buf[OGS_GTP2_MAX_TRAFFIC_FLOW_TEMPLATE];
ogs_assert(bearer); ogs_assert(bearer);
sess = bearer->sess; sess = bearer->sess;
@ -382,7 +382,7 @@ ogs_pkbuf_t *smf_s5c_build_update_bearer_request(
ogs_debug(" SGW_S5C_TEID[0x%x] SMF_N4_TEID[0x%x]", ogs_debug(" SGW_S5C_TEID[0x%x] SMF_N4_TEID[0x%x]",
sess->sgw_s5c_teid, sess->smf_n4_teid); sess->sgw_s5c_teid, sess->smf_n4_teid);
req = &gtp_message.update_bearer_request; req = &gtp_message.update_bearer_request;
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
/* Bearer EBI */ /* Bearer EBI */
req->bearer_contexts.presence = 1; req->bearer_contexts.presence = 1;
@ -397,7 +397,7 @@ ogs_pkbuf_t *smf_s5c_build_update_bearer_request(
* but it shall be encoded as shown in Figure 8.7-1 as * but it shall be encoded as shown in Figure 8.7-1 as
* Unsigned32 binary integer values in kbps (1000 bits per second). * Unsigned32 binary integer values in kbps (1000 bits per second).
*/ */
memset(&ambr, 0, sizeof(ogs_gtp_ambr_t)); memset(&ambr, 0, sizeof(ogs_gtp2_ambr_t));
ambr.uplink = htobe32(sess->session.ambr.uplink / 1000); ambr.uplink = htobe32(sess->session.ambr.uplink / 1000);
ambr.downlink = htobe32(sess->session.ambr.downlink / 1000); ambr.downlink = htobe32(sess->session.ambr.downlink / 1000);
req->aggregate_maximum_bit_rate.presence = 1; req->aggregate_maximum_bit_rate.presence = 1;
@ -426,19 +426,19 @@ ogs_pkbuf_t *smf_s5c_build_update_bearer_request(
bearer_qos.ul_gbr = bearer->qos.gbr.uplink; bearer_qos.ul_gbr = bearer->qos.gbr.uplink;
req->bearer_contexts.bearer_level_qos.presence = 1; req->bearer_contexts.bearer_level_qos.presence = 1;
ogs_gtp_build_bearer_qos(&req->bearer_contexts.bearer_level_qos, ogs_gtp2_build_bearer_qos(&req->bearer_contexts.bearer_level_qos,
&bearer_qos, bearer_qos_buf, GTP_BEARER_QOS_LEN); &bearer_qos, bearer_qos_buf, GTP2_BEARER_QOS_LEN);
} }
/* Bearer TFT */ /* Bearer TFT */
if (tft && tft->num_of_packet_filter) { if (tft && tft->num_of_packet_filter) {
req->bearer_contexts.tft.presence = 1; req->bearer_contexts.tft.presence = 1;
ogs_gtp_build_tft(&req->bearer_contexts.tft, ogs_gtp2_build_tft(&req->bearer_contexts.tft,
tft, tft_buf, OGS_GTP_MAX_TRAFFIC_FLOW_TEMPLATE); tft, tft_buf, OGS_GTP2_MAX_TRAFFIC_FLOW_TEMPLATE);
} }
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *smf_s5c_build_delete_bearer_request( ogs_pkbuf_t *smf_s5c_build_delete_bearer_request(
@ -447,10 +447,10 @@ ogs_pkbuf_t *smf_s5c_build_delete_bearer_request(
smf_sess_t *sess = NULL; smf_sess_t *sess = NULL;
smf_bearer_t *linked_bearer = NULL; smf_bearer_t *linked_bearer = NULL;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_delete_bearer_request_t *req = NULL; ogs_gtp2_delete_bearer_request_t *req = NULL;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_assert(bearer); ogs_assert(bearer);
sess = bearer->sess; sess = bearer->sess;
@ -462,7 +462,7 @@ ogs_pkbuf_t *smf_s5c_build_delete_bearer_request(
ogs_debug(" SGW_S5C_TEID[0x%x] SMF_N4_TEID[0x%x]", ogs_debug(" SGW_S5C_TEID[0x%x] SMF_N4_TEID[0x%x]",
sess->sgw_s5c_teid, sess->smf_n4_teid); sess->sgw_s5c_teid, sess->smf_n4_teid);
req = &gtp_message.delete_bearer_request; req = &gtp_message.delete_bearer_request;
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
if (bearer->ebi == linked_bearer->ebi) { if (bearer->ebi == linked_bearer->ebi) {
/* /*
@ -500,7 +500,7 @@ ogs_pkbuf_t *smf_s5c_build_delete_bearer_request(
req->procedure_transaction_id.u8 = pti; req->procedure_transaction_id.u8 = pti;
} }
if (cause_value != OGS_GTP_CAUSE_UNDEFINED_VALUE) { if (cause_value != OGS_GTP2_CAUSE_UNDEFINED_VALUE) {
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = cause_value; cause.value = cause_value;
req->cause.presence = 1; req->cause.presence = 1;
@ -509,5 +509,5 @@ ogs_pkbuf_t *smf_s5c_build_delete_bearer_request(
} }
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }

View File

@ -33,13 +33,13 @@ ogs_pkbuf_t *smf_s5c_build_delete_session_response(
ogs_pkbuf_t *smf_s5c_build_modify_bearer_response( ogs_pkbuf_t *smf_s5c_build_modify_bearer_response(
uint8_t type, smf_sess_t *sess, uint8_t type, smf_sess_t *sess,
ogs_gtp_modify_bearer_request_t *req); ogs_gtp2_modify_bearer_request_t *req);
ogs_pkbuf_t *smf_s5c_build_create_bearer_request( ogs_pkbuf_t *smf_s5c_build_create_bearer_request(
uint8_t type, smf_bearer_t *bearer, ogs_gtp_tft_t *tft); uint8_t type, smf_bearer_t *bearer, ogs_gtp2_tft_t *tft);
ogs_pkbuf_t *smf_s5c_build_update_bearer_request( ogs_pkbuf_t *smf_s5c_build_update_bearer_request(
uint8_t type, smf_bearer_t *bearer, uint8_t pti, uint8_t type, smf_bearer_t *bearer, uint8_t pti,
ogs_gtp_tft_t *tft, bool qos_presence); ogs_gtp2_tft_t *tft, bool qos_presence);
ogs_pkbuf_t *smf_s5c_build_delete_bearer_request( ogs_pkbuf_t *smf_s5c_build_delete_bearer_request(
uint8_t type, smf_bearer_t *bearer, uint8_t pti, uint8_t cause_value); uint8_t type, smf_bearer_t *bearer, uint8_t pti, uint8_t cause_value);
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -28,7 +28,7 @@
#include "ipfw/ipfw2.h" #include "ipfw/ipfw2.h"
void smf_s5c_handle_echo_request( void smf_s5c_handle_echo_request(
ogs_gtp_xact_t *xact, ogs_gtp_echo_request_t *req) ogs_gtp_xact_t *xact, ogs_gtp2_echo_request_t *req)
{ {
ogs_assert(xact); ogs_assert(xact);
ogs_assert(req); ogs_assert(req);
@ -36,18 +36,18 @@ void smf_s5c_handle_echo_request(
ogs_debug("[PGW] Receiving Echo Request"); ogs_debug("[PGW] Receiving Echo Request");
/* FIXME : Before implementing recovery counter correctly, /* FIXME : Before implementing recovery counter correctly,
* I'll re-use the recovery value in request message */ * I'll re-use the recovery value in request message */
ogs_gtp_send_echo_response(xact, req->recovery.u8, 0); ogs_gtp2_send_echo_response(xact, req->recovery.u8, 0);
} }
void smf_s5c_handle_echo_response( void smf_s5c_handle_echo_response(
ogs_gtp_xact_t *xact, ogs_gtp_echo_response_t *req) ogs_gtp_xact_t *xact, ogs_gtp2_echo_response_t *req)
{ {
/* Not Implemented */ /* Not Implemented */
} }
void smf_s5c_handle_create_session_request( void smf_s5c_handle_create_session_request(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_create_session_request_t *req) ogs_gtp2_create_session_request_t *req)
{ {
char buf1[OGS_ADDRSTRLEN]; char buf1[OGS_ADDRSTRLEN];
char buf2[OGS_ADDRSTRLEN]; char buf2[OGS_ADDRSTRLEN];
@ -55,15 +55,15 @@ void smf_s5c_handle_create_session_request(
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
smf_ue_t *smf_ue = NULL; smf_ue_t *smf_ue = NULL;
ogs_gtp_f_teid_t *sgw_s5c_teid, *sgw_s5u_teid; ogs_gtp2_f_teid_t *sgw_s5c_teid, *sgw_s5u_teid;
ogs_paa_t *paa = NULL; ogs_paa_t *paa = NULL;
smf_bearer_t *bearer = NULL; smf_bearer_t *bearer = NULL;
ogs_gtp_bearer_qos_t bearer_qos; ogs_gtp2_bearer_qos_t bearer_qos;
ogs_gtp_ambr_t *ambr = NULL; ogs_gtp2_ambr_t *ambr = NULL;
uint16_t decoded = 0; uint16_t decoded = 0;
ogs_assert(xact); ogs_assert(xact);
@ -71,86 +71,86 @@ void smf_s5c_handle_create_session_request(
ogs_debug("Create Session Request"); ogs_debug("Create Session Request");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (req->imsi.presence == 0) { if (req->imsi.presence == 0) {
ogs_error("No IMSI"); ogs_error("No IMSI");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->sender_f_teid_for_control_plane.presence == 0) { if (req->sender_f_teid_for_control_plane.presence == 0) {
ogs_error("No TEID"); ogs_error("No TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts_to_be_created.presence == 0) { if (req->bearer_contexts_to_be_created.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts_to_be_created.eps_bearer_id.presence == 0) { if (req->bearer_contexts_to_be_created.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->bearer_contexts_to_be_created.bearer_level_qos.presence == 0) { if (req->bearer_contexts_to_be_created.bearer_level_qos.presence == 0) {
ogs_error("No EPS Bearer QoS"); ogs_error("No EPS Bearer QoS");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->pdn_address_allocation.presence == 0) { if (req->pdn_address_allocation.presence == 0) {
ogs_error("No PAA"); ogs_error("No PAA");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->serving_network.presence == 0) { if (req->serving_network.presence == 0) {
ogs_error("No Serving Network"); ogs_error("No Serving Network");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->serving_network.data == NULL) { if (req->serving_network.data == NULL) {
ogs_error("No Data in Serving Network"); ogs_error("No Data in Serving Network");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->serving_network.len != OGS_PLMN_ID_LEN) { if (req->serving_network.len != OGS_PLMN_ID_LEN) {
ogs_error("Invalid Len[%d] in Serving Network", ogs_error("Invalid Len[%d] in Serving Network",
req->serving_network.len); req->serving_network.len);
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (!sess) { if (!sess) {
ogs_error("No Context"); ogs_error("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} else { } else {
if (!ogs_diam_app_connected(OGS_DIAM_GX_APPLICATION_ID)) { if (!ogs_diam_app_connected(OGS_DIAM_GX_APPLICATION_ID)) {
ogs_error("No Gx Diameter Peer"); ogs_error("No Gx Diameter Peer");
cause_value = OGS_GTP_CAUSE_REMOTE_PEER_NOT_RESPONDING; cause_value = OGS_GTP2_CAUSE_REMOTE_PEER_NOT_RESPONDING;
} }
switch (sess->gtp_rat_type) { switch (sess->gtp_rat_type) {
case OGS_GTP_RAT_TYPE_EUTRAN: case OGS_GTP2_RAT_TYPE_EUTRAN:
if (req->bearer_contexts_to_be_created. if (req->bearer_contexts_to_be_created.
s5_s8_u_sgw_f_teid.presence == 0) { s5_s8_u_sgw_f_teid.presence == 0) {
ogs_error("No S5/S8 SGW GTP-U TEID"); ogs_error("No S5/S8 SGW GTP-U TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (req->user_location_information.presence == 0) { if (req->user_location_information.presence == 0) {
ogs_error("No UE Location Information"); ogs_error("No UE Location Information");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
break; break;
case OGS_GTP_RAT_TYPE_WLAN: case OGS_GTP2_RAT_TYPE_WLAN:
if (!ogs_diam_app_connected(OGS_DIAM_S6B_APPLICATION_ID)) { if (!ogs_diam_app_connected(OGS_DIAM_S6B_APPLICATION_ID)) {
ogs_error("No S6b Diameter Peer"); ogs_error("No S6b Diameter Peer");
cause_value = OGS_GTP_CAUSE_REMOTE_PEER_NOT_RESPONDING; cause_value = OGS_GTP2_CAUSE_REMOTE_PEER_NOT_RESPONDING;
} }
if (req->bearer_contexts_to_be_created. if (req->bearer_contexts_to_be_created.
s2b_u_epdg_f_teid_5.presence == 0) { s2b_u_epdg_f_teid_5.presence == 0) {
ogs_error("No S2b ePDG GTP-U TEID"); ogs_error("No S2b ePDG GTP-U TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
break; break;
default: default:
ogs_error("Unknown RAT Type [%d]", req->rat_type.u8); ogs_error("Unknown RAT Type [%d]", req->rat_type.u8);
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp2_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, cause_value); OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -158,23 +158,23 @@ void smf_s5c_handle_create_session_request(
smf_ue = sess->smf_ue; smf_ue = sess->smf_ue;
ogs_assert(smf_ue); ogs_assert(smf_ue);
if (sess->gtp_rat_type == OGS_GTP_RAT_TYPE_EUTRAN) { if (sess->gtp_rat_type == OGS_GTP2_RAT_TYPE_EUTRAN) {
/* User Location Inforation is mandatory only for E-UTRAN */ /* User Location Inforation is mandatory only for E-UTRAN */
ogs_assert(req->user_location_information.presence); ogs_assert(req->user_location_information.presence);
ogs_gtp_parse_uli(&uli, &req->user_location_information); ogs_gtp2_parse_uli(&uli, &req->user_location_information);
memcpy(&sess->e_tai, &uli.tai, sizeof(sess->e_tai)); memcpy(&sess->e_tai, &uli.tai, sizeof(sess->e_tai));
memcpy(&sess->e_cgi, &uli.e_cgi, sizeof(sess->e_cgi)); memcpy(&sess->e_cgi, &uli.e_cgi, sizeof(sess->e_cgi));
} else if (sess->gtp_rat_type == OGS_GTP_RAT_TYPE_WLAN) { } else if (sess->gtp_rat_type == OGS_GTP2_RAT_TYPE_WLAN) {
/* Even after handover to WLAN, /* Even after handover to WLAN,
* there must be at least one EUTRAN session */ * there must be at least one EUTRAN session */
smf_sess_t *eutran_sess = smf_sess_find_by_apn( smf_sess_t *eutran_sess = smf_sess_find_by_apn(
smf_ue, sess->session.name, OGS_GTP_RAT_TYPE_EUTRAN); smf_ue, sess->session.name, OGS_GTP2_RAT_TYPE_EUTRAN);
if (eutran_sess) { if (eutran_sess) {
/* Need to check handover is possible */ /* Need to check handover is possible */
int eutran_session_count = 0; int eutran_session_count = 0;
ogs_list_for_each(&smf_ue->sess_list, eutran_sess) { ogs_list_for_each(&smf_ue->sess_list, eutran_sess) {
if (eutran_sess->gtp_rat_type != OGS_GTP_RAT_TYPE_EUTRAN) if (eutran_sess->gtp_rat_type != OGS_GTP2_RAT_TYPE_EUTRAN)
continue; continue;
if (strcmp(eutran_sess->session.name, sess->session.name) == 0) if (strcmp(eutran_sess->session.name, sess->session.name) == 0)
continue; continue;
@ -184,9 +184,9 @@ void smf_s5c_handle_create_session_request(
if (eutran_session_count < 1) { if (eutran_session_count < 1) {
ogs_error("Cannot handover to WLAN"); ogs_error("Cannot handover to WLAN");
ogs_gtp_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp2_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE,
OGS_GTP_CAUSE_MULTIPLE_ACCESSES_TO_A_PDN_CONNECTION_NOT_ALLOWED); OGS_GTP2_CAUSE_MULTIPLE_ACCESSES_TO_A_PDN_CONNECTION_NOT_ALLOWED);
return; return;
} }
} }
@ -201,9 +201,9 @@ void smf_s5c_handle_create_session_request(
/* Check if selected PGW is associated with SMF */ /* Check if selected PGW is associated with SMF */
ogs_assert(sess->pfcp_node); ogs_assert(sess->pfcp_node);
if (!OGS_FSM_CHECK(&sess->pfcp_node->sm, smf_pfcp_state_associated)) { if (!OGS_FSM_CHECK(&sess->pfcp_node->sm, smf_pfcp_state_associated)) {
ogs_gtp_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp2_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP_CREATE_SESSION_RESPONSE_TYPE, OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE,
OGS_GTP_CAUSE_REMOTE_PEER_NOT_RESPONDING); OGS_GTP2_CAUSE_REMOTE_PEER_NOT_RESPONDING);
return; return;
} }
@ -216,7 +216,7 @@ void smf_s5c_handle_create_session_request(
/* Initially Set Session Type from UE */ /* Initially Set Session Type from UE */
sess->session.session_type = sess->ue_session_type; sess->session.session_type = sess->ue_session_type;
rv = ogs_gtp_paa_to_ip(paa, &sess->session.ue_ip); rv = ogs_gtp2_paa_to_ip(paa, &sess->session.ue_ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
ogs_assert(OGS_PFCP_CAUSE_REQUEST_ACCEPTED == smf_sess_set_ue_ip(sess)); ogs_assert(OGS_PFCP_CAUSE_REQUEST_ACCEPTED == smf_sess_set_ue_ip(sess));
@ -241,28 +241,28 @@ void smf_s5c_handle_create_session_request(
sgw_s5c_teid = req->sender_f_teid_for_control_plane.data; sgw_s5c_teid = req->sender_f_teid_for_control_plane.data;
ogs_assert(sgw_s5c_teid); ogs_assert(sgw_s5c_teid);
sess->sgw_s5c_teid = be32toh(sgw_s5c_teid->teid); sess->sgw_s5c_teid = be32toh(sgw_s5c_teid->teid);
rv = ogs_gtp_f_teid_to_ip(sgw_s5c_teid, &sess->sgw_s5c_ip); rv = ogs_gtp2_f_teid_to_ip(sgw_s5c_teid, &sess->sgw_s5c_ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
ogs_debug(" SGW_S5C_TEID[0x%x] SMF_N4_TEID[0x%x]", ogs_debug(" SGW_S5C_TEID[0x%x] SMF_N4_TEID[0x%x]",
sess->sgw_s5c_teid, sess->smf_n4_teid); sess->sgw_s5c_teid, sess->smf_n4_teid);
switch (sess->gtp_rat_type) { switch (sess->gtp_rat_type) {
case OGS_GTP_RAT_TYPE_EUTRAN: case OGS_GTP2_RAT_TYPE_EUTRAN:
sgw_s5u_teid = req->bearer_contexts_to_be_created. sgw_s5u_teid = req->bearer_contexts_to_be_created.
s5_s8_u_sgw_f_teid.data; s5_s8_u_sgw_f_teid.data;
ogs_assert(sgw_s5u_teid); ogs_assert(sgw_s5u_teid);
bearer->sgw_s5u_teid = be32toh(sgw_s5u_teid->teid); bearer->sgw_s5u_teid = be32toh(sgw_s5u_teid->teid);
rv = ogs_gtp_f_teid_to_ip(sgw_s5u_teid, &bearer->sgw_s5u_ip); rv = ogs_gtp2_f_teid_to_ip(sgw_s5u_teid, &bearer->sgw_s5u_ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
break; break;
case OGS_GTP_RAT_TYPE_WLAN: case OGS_GTP2_RAT_TYPE_WLAN:
sgw_s5u_teid = req->bearer_contexts_to_be_created. sgw_s5u_teid = req->bearer_contexts_to_be_created.
s2b_u_epdg_f_teid_5.data; s2b_u_epdg_f_teid_5.data;
ogs_assert(sgw_s5u_teid); ogs_assert(sgw_s5u_teid);
bearer->sgw_s5u_teid = be32toh(sgw_s5u_teid->teid); bearer->sgw_s5u_teid = be32toh(sgw_s5u_teid->teid);
rv = ogs_gtp_f_teid_to_ip(sgw_s5u_teid, &bearer->sgw_s5u_ip); rv = ogs_gtp2_f_teid_to_ip(sgw_s5u_teid, &bearer->sgw_s5u_ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
break; break;
default: default:
@ -274,7 +274,7 @@ void smf_s5c_handle_create_session_request(
bearer->sgw_s5u_teid, bearer->pgw_s5u_teid); bearer->sgw_s5u_teid, bearer->pgw_s5u_teid);
/* Set Bearer QoS */ /* Set Bearer QoS */
decoded = ogs_gtp_parse_bearer_qos(&bearer_qos, decoded = ogs_gtp2_parse_bearer_qos(&bearer_qos,
&req->bearer_contexts_to_be_created.bearer_level_qos); &req->bearer_contexts_to_be_created.bearer_level_qos);
ogs_assert(req->bearer_contexts_to_be_created.bearer_level_qos.len == ogs_assert(req->bearer_contexts_to_be_created.bearer_level_qos.len ==
decoded); decoded);
@ -317,11 +317,11 @@ void smf_s5c_handle_create_session_request(
} }
switch (sess->gtp_rat_type) { switch (sess->gtp_rat_type) {
case OGS_GTP_RAT_TYPE_EUTRAN: case OGS_GTP2_RAT_TYPE_EUTRAN:
smf_gx_send_ccr(sess, xact, smf_gx_send_ccr(sess, xact,
OGS_DIAM_GX_CC_REQUEST_TYPE_INITIAL_REQUEST); OGS_DIAM_GX_CC_REQUEST_TYPE_INITIAL_REQUEST);
break; break;
case OGS_GTP_RAT_TYPE_WLAN: case OGS_GTP2_RAT_TYPE_WLAN:
smf_s6b_send_aar(sess, xact); smf_s6b_send_aar(sess, xact);
break; break;
default: default:
@ -332,7 +332,7 @@ void smf_s5c_handle_create_session_request(
void smf_s5c_handle_delete_session_request( void smf_s5c_handle_delete_session_request(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_delete_session_request_t *req) ogs_gtp2_delete_session_request_t *req)
{ {
uint8_t cause_value = 0; uint8_t cause_value = 0;
@ -341,28 +341,28 @@ void smf_s5c_handle_delete_session_request(
ogs_assert(xact); ogs_assert(xact);
ogs_assert(req); ogs_assert(req);
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (!sess) { if (!sess) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} else { } else {
if (!ogs_diam_app_connected(OGS_DIAM_GX_APPLICATION_ID)) { if (!ogs_diam_app_connected(OGS_DIAM_GX_APPLICATION_ID)) {
ogs_error("No Gx Diameter Peer"); ogs_error("No Gx Diameter Peer");
cause_value = OGS_GTP_CAUSE_REMOTE_PEER_NOT_RESPONDING; cause_value = OGS_GTP2_CAUSE_REMOTE_PEER_NOT_RESPONDING;
} }
if (sess->gtp_rat_type == OGS_GTP_RAT_TYPE_WLAN) { if (sess->gtp_rat_type == OGS_GTP2_RAT_TYPE_WLAN) {
if (!ogs_diam_app_connected(OGS_DIAM_S6B_APPLICATION_ID)) { if (!ogs_diam_app_connected(OGS_DIAM_S6B_APPLICATION_ID)) {
ogs_error("No S6b Diameter Peer"); ogs_error("No S6b Diameter Peer");
cause_value = OGS_GTP_CAUSE_REMOTE_PEER_NOT_RESPONDING; cause_value = OGS_GTP2_CAUSE_REMOTE_PEER_NOT_RESPONDING;
} }
} }
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp2_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP_DELETE_SESSION_RESPONSE_TYPE, cause_value); OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -370,11 +370,11 @@ void smf_s5c_handle_delete_session_request(
sess->sgw_s5c_teid, sess->smf_n4_teid); sess->sgw_s5c_teid, sess->smf_n4_teid);
switch (sess->gtp_rat_type) { switch (sess->gtp_rat_type) {
case OGS_GTP_RAT_TYPE_EUTRAN: case OGS_GTP2_RAT_TYPE_EUTRAN:
smf_gx_send_ccr(sess, xact, smf_gx_send_ccr(sess, xact,
OGS_DIAM_GX_CC_REQUEST_TYPE_TERMINATION_REQUEST); OGS_DIAM_GX_CC_REQUEST_TYPE_TERMINATION_REQUEST);
break; break;
case OGS_GTP_RAT_TYPE_WLAN: case OGS_GTP2_RAT_TYPE_WLAN:
smf_s6b_send_str(sess, xact, smf_s6b_send_str(sess, xact,
OGS_DIAM_TERMINATION_CAUSE_DIAMETER_LOGOUT); OGS_DIAM_TERMINATION_CAUSE_DIAMETER_LOGOUT);
break; break;
@ -386,13 +386,13 @@ void smf_s5c_handle_delete_session_request(
void smf_s5c_handle_modify_bearer_request( void smf_s5c_handle_modify_bearer_request(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_modify_bearer_request_t *req) ogs_gtp2_modify_bearer_request_t *req)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
ogs_gtp_indication_t *indication = NULL; ogs_gtp2_indication_t *indication = NULL;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
smf_ue_t *smf_ue = NULL; smf_ue_t *smf_ue = NULL;
@ -403,16 +403,16 @@ void smf_s5c_handle_modify_bearer_request(
ogs_assert(xact); ogs_assert(xact);
ogs_assert(req); ogs_assert(req);
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (!sess) { if (!sess) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp2_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE, cause_value); OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value);
return; return;
} }
@ -427,8 +427,8 @@ void smf_s5c_handle_modify_bearer_request(
* to what is done in smf_gn_handle_update_pdp_context_request() * to what is done in smf_gn_handle_update_pdp_context_request()
*/ */
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE; h.type = OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE;
h.teid = sess->sgw_s5c_teid; h.teid = sess->sgw_s5c_teid;
pkbuf = smf_s5c_build_modify_bearer_response(h.type, sess, req); pkbuf = smf_s5c_build_modify_bearer_response(h.type, sess, req);
@ -448,7 +448,7 @@ void smf_s5c_handle_modify_bearer_request(
if (indication && indication->handover_indication) { if (indication && indication->handover_indication) {
ogs_assert(sess->session.name); ogs_assert(sess->session.name);
wlan_sess = smf_sess_find_by_apn( wlan_sess = smf_sess_find_by_apn(
smf_ue, sess->session.name, OGS_GTP_RAT_TYPE_WLAN); smf_ue, sess->session.name, OGS_GTP2_RAT_TYPE_WLAN);
ogs_expect_or_return(wlan_sess); ogs_expect_or_return(wlan_sess);
ogs_expect_or_return(ogs_list_first(&wlan_sess->bearer_list)); ogs_expect_or_return(ogs_list_first(&wlan_sess->bearer_list));
@ -457,17 +457,17 @@ void smf_s5c_handle_modify_bearer_request(
wlan_sess, NULL, wlan_sess, NULL,
OGS_PFCP_MODIFY_DL_ONLY|OGS_PFCP_MODIFY_DEACTIVATE, OGS_PFCP_MODIFY_DL_ONLY|OGS_PFCP_MODIFY_DEACTIVATE,
OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED, OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED,
OGS_GTP_CAUSE_ACCESS_CHANGED_FROM_NON_3GPP_TO_3GPP)); OGS_GTP2_CAUSE_ACCESS_CHANGED_FROM_NON_3GPP_TO_3GPP));
} }
} }
void smf_s5c_handle_create_bearer_response( void smf_s5c_handle_create_bearer_response(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_create_bearer_response_t *rsp) ogs_gtp2_create_bearer_response_t *rsp)
{ {
int rv; int rv;
uint8_t cause_value; uint8_t cause_value;
ogs_gtp_f_teid_t *sgw_s5u_teid, *pgw_s5u_teid; ogs_gtp2_f_teid_t *sgw_s5u_teid, *pgw_s5u_teid;
smf_bearer_t *bearer = NULL; smf_bearer_t *bearer = NULL;
ogs_pfcp_far_t *dl_far = NULL; ogs_pfcp_far_t *dl_far = NULL;
@ -479,18 +479,18 @@ void smf_s5c_handle_create_bearer_response(
ogs_debug("Create Bearer Response"); ogs_debug("Create Bearer Response");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
rv = ogs_gtp_xact_commit(xact); rv = ogs_gtp_xact_commit(xact);
ogs_expect(rv == OGS_OK); ogs_expect(rv == OGS_OK);
if (rsp->bearer_contexts.presence == 0) { if (rsp->bearer_contexts.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts.eps_bearer_id.presence == 0) { if (rsp->bearer_contexts.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts.s5_s8_u_pgw_f_teid.presence && if (rsp->bearer_contexts.s5_s8_u_pgw_f_teid.presence &&
@ -511,11 +511,11 @@ void smf_s5c_handle_create_bearer_response(
if (!pgw_s5u_teid) { if (!pgw_s5u_teid) {
ogs_error("No PGW TEID"); ogs_error("No PGW TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (!sgw_s5u_teid) { if (!sgw_s5u_teid) {
ogs_error("No SGW TEID"); ogs_error("No SGW TEID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (!sess) { if (!sess) {
@ -524,15 +524,15 @@ void smf_s5c_handle_create_bearer_response(
sess = bearer->sess; sess = bearer->sess;
ogs_assert(sess); ogs_assert(sess);
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
if (rsp->bearer_contexts.cause.presence) { if (rsp->bearer_contexts.cause.presence) {
cause = rsp->bearer_contexts.cause.data; cause = rsp->bearer_contexts.cause.data;
ogs_assert(cause); ogs_assert(cause);
@ -540,22 +540,22 @@ void smf_s5c_handle_create_bearer_response(
cause_value = cause->value; cause_value = cause->value;
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
} else { } else {
ogs_warn("GTP Failed [CAUSE:%d]", cause_value); ogs_warn("GTP Failed [CAUSE:%d]", cause_value);
} }
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
smf_epc_pfcp_send_bearer_modification_request( smf_epc_pfcp_send_bearer_modification_request(
bearer, NULL, OGS_PFCP_MODIFY_REMOVE, bearer, NULL, OGS_PFCP_MODIFY_REMOVE,
OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED, OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED,
OGS_GTP_CAUSE_UNDEFINED_VALUE)); OGS_GTP2_CAUSE_UNDEFINED_VALUE));
return; return;
} }
@ -570,7 +570,7 @@ void smf_s5c_handle_create_bearer_response(
/* Data Plane(DL) : SGW-S5U */ /* Data Plane(DL) : SGW-S5U */
ogs_assert(sgw_s5u_teid); ogs_assert(sgw_s5u_teid);
bearer->sgw_s5u_teid = be32toh(sgw_s5u_teid->teid); bearer->sgw_s5u_teid = be32toh(sgw_s5u_teid->teid);
rv = ogs_gtp_f_teid_to_ip(sgw_s5u_teid, &bearer->sgw_s5u_ip); rv = ogs_gtp2_f_teid_to_ip(sgw_s5u_teid, &bearer->sgw_s5u_ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
ogs_debug("Create Bearer Response : SGW[0x%x] --> SMF[0x%x]", ogs_debug("Create Bearer Response : SGW[0x%x] --> SMF[0x%x]",
@ -593,12 +593,12 @@ void smf_s5c_handle_create_bearer_response(
smf_epc_pfcp_send_bearer_modification_request( smf_epc_pfcp_send_bearer_modification_request(
bearer, NULL, OGS_PFCP_MODIFY_ACTIVATE, bearer, NULL, OGS_PFCP_MODIFY_ACTIVATE,
OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED, OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED,
OGS_GTP_CAUSE_UNDEFINED_VALUE)); OGS_GTP2_CAUSE_UNDEFINED_VALUE));
} }
void smf_s5c_handle_update_bearer_response( void smf_s5c_handle_update_bearer_response(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_update_bearer_response_t *rsp) ogs_gtp2_update_bearer_response_t *rsp)
{ {
int rv; int rv;
uint8_t cause_value; uint8_t cause_value;
@ -616,18 +616,18 @@ void smf_s5c_handle_update_bearer_response(
ogs_debug("Update Bearer Response"); ogs_debug("Update Bearer Response");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
rv = ogs_gtp_xact_commit(xact); rv = ogs_gtp_xact_commit(xact);
ogs_expect(rv == OGS_OK); ogs_expect(rv == OGS_OK);
if (rsp->bearer_contexts.presence == 0) { if (rsp->bearer_contexts.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts.eps_bearer_id.presence == 0) { if (rsp->bearer_contexts.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (!sess) { if (!sess) {
@ -636,15 +636,15 @@ void smf_s5c_handle_update_bearer_response(
sess = bearer->sess; sess = bearer->sess;
ogs_assert(sess); ogs_assert(sess);
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
if (rsp->bearer_contexts.cause.presence) { if (rsp->bearer_contexts.cause.presence) {
cause = rsp->bearer_contexts.cause.data; cause = rsp->bearer_contexts.cause.data;
ogs_assert(cause); ogs_assert(cause);
@ -652,20 +652,20 @@ void smf_s5c_handle_update_bearer_response(
cause_value = cause->value; cause_value = cause->value;
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
} else { } else {
ogs_warn("GTP Failed [CAUSE:%d]", cause_value); ogs_warn("GTP Failed [CAUSE:%d]", cause_value);
} }
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
ogs_debug(" SGW_S5C_TEID[0x%x] SMF_N4_TEID[0x%x]", ogs_debug(" SGW_S5C_TEID[0x%x] SMF_N4_TEID[0x%x]",
sess->sgw_s5c_teid, sess->smf_n4_teid); sess->sgw_s5c_teid, sess->smf_n4_teid);
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
return; return;
} }
@ -687,12 +687,12 @@ void smf_s5c_handle_update_bearer_response(
smf_epc_pfcp_send_bearer_modification_request( smf_epc_pfcp_send_bearer_modification_request(
bearer, NULL, pfcp_flags, bearer, NULL, pfcp_flags,
OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED, OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED,
OGS_GTP_CAUSE_UNDEFINED_VALUE)); OGS_GTP2_CAUSE_UNDEFINED_VALUE));
} }
void smf_s5c_handle_delete_bearer_response( void smf_s5c_handle_delete_bearer_response(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_delete_bearer_response_t *rsp) ogs_gtp2_delete_bearer_response_t *rsp)
{ {
int rv; int rv;
uint8_t cause_value; uint8_t cause_value;
@ -703,7 +703,7 @@ void smf_s5c_handle_delete_bearer_response(
ogs_debug("Delete Bearer Response"); ogs_debug("Delete Bearer Response");
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
bearer = xact->data; bearer = xact->data;
ogs_assert(bearer); ogs_assert(bearer);
@ -717,7 +717,7 @@ void smf_s5c_handle_delete_bearer_response(
sess = bearer->sess; sess = bearer->sess;
ogs_assert(sess); ogs_assert(sess);
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (rsp->linked_eps_bearer_id.presence) { if (rsp->linked_eps_bearer_id.presence) {
@ -731,17 +731,17 @@ void smf_s5c_handle_delete_bearer_response(
* 2. ePDG sends Delete Bearer Response(DEFAULT BEARER) to SMF. * 2. ePDG sends Delete Bearer Response(DEFAULT BEARER) to SMF.
*/ */
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause->value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause->value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
} else { } else {
ogs_error("GTP Failed [CAUSE:%d]", cause_value); ogs_error("GTP Failed [CAUSE:%d]", cause_value);
} }
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
@ -761,19 +761,19 @@ void smf_s5c_handle_delete_bearer_response(
*/ */
if (rsp->bearer_contexts.presence == 0) { if (rsp->bearer_contexts.presence == 0) {
ogs_error("No Bearer"); ogs_error("No Bearer");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->bearer_contexts.eps_bearer_id.presence == 0) { if (rsp->bearer_contexts.eps_bearer_id.presence == 0) {
ogs_error("No EPS Bearer ID"); ogs_error("No EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
if (rsp->bearer_contexts.cause.presence) { if (rsp->bearer_contexts.cause.presence) {
cause = rsp->bearer_contexts.cause.data; cause = rsp->bearer_contexts.cause.data;
ogs_assert(cause); ogs_assert(cause);
@ -781,14 +781,14 @@ void smf_s5c_handle_delete_bearer_response(
cause_value = cause->value; cause_value = cause->value;
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
} else { } else {
ogs_warn("GTP Failed [CAUSE:%d]", cause_value); ogs_warn("GTP Failed [CAUSE:%d]", cause_value);
} }
} else { } else {
ogs_error("No Cause"); ogs_error("No Cause");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
ogs_debug(" SGW_S5C_TEID[0x%x] SMF_N4_TEID[0x%x]", ogs_debug(" SGW_S5C_TEID[0x%x] SMF_N4_TEID[0x%x]",
@ -801,11 +801,11 @@ void smf_s5c_handle_delete_bearer_response(
smf_epc_pfcp_send_bearer_modification_request( smf_epc_pfcp_send_bearer_modification_request(
bearer, NULL, OGS_PFCP_MODIFY_REMOVE, bearer, NULL, OGS_PFCP_MODIFY_REMOVE,
OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED, OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED,
OGS_GTP_CAUSE_UNDEFINED_VALUE)); OGS_GTP2_CAUSE_UNDEFINED_VALUE));
} }
} }
static int reconfigure_packet_filter(smf_pf_t *pf, ogs_gtp_tft_t *tft, int i) static int reconfigure_packet_filter(smf_pf_t *pf, ogs_gtp2_tft_t *tft, int i)
{ {
int j; int j;
@ -899,20 +899,20 @@ static int reconfigure_packet_filter(smf_pf_t *pf, ogs_gtp_tft_t *tft, int i)
void smf_s5c_handle_bearer_resource_command( void smf_s5c_handle_bearer_resource_command(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_bearer_resource_command_t *cmd) ogs_gtp2_bearer_resource_command_t *cmd)
{ {
int rv; int rv;
uint8_t cause_value = 0; uint8_t cause_value = 0;
int i; int i;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
smf_bearer_t *bearer = NULL; smf_bearer_t *bearer = NULL;
smf_pf_t *pf = NULL; smf_pf_t *pf = NULL;
int16_t decoded; int16_t decoded;
ogs_gtp_tft_t tft; ogs_gtp2_tft_t tft;
int tft_update = 0; int tft_update = 0;
int qos_update = 0; int qos_update = 0;
@ -926,28 +926,28 @@ void smf_s5c_handle_bearer_resource_command(
ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]", ogs_debug(" SGW_S5C_TEID[0x%x] PGW_S5C_TEID[0x%x]",
sess->sgw_s5c_teid, sess->smf_n4_teid); sess->sgw_s5c_teid, sess->smf_n4_teid);
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
if (cmd->procedure_transaction_id.presence == 0) { if (cmd->procedure_transaction_id.presence == 0) {
ogs_error("No PTI"); ogs_error("No PTI");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cmd->traffic_aggregate_description.presence == 0) { if (cmd->traffic_aggregate_description.presence == 0) {
ogs_error("No Traffic aggregate description(TAD)"); ogs_error("No Traffic aggregate description(TAD)");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (cmd->linked_eps_bearer_id.presence == 0) { if (cmd->linked_eps_bearer_id.presence == 0) {
ogs_error("No Linked EPS Bearer ID"); ogs_error("No Linked EPS Bearer ID");
cause_value = OGS_GTP_CAUSE_MANDATORY_IE_MISSING; cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
} }
if (!sess) { if (!sess) {
ogs_warn("No Context"); ogs_warn("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
uint8_t ebi = cmd->linked_eps_bearer_id.u8; uint8_t ebi = cmd->linked_eps_bearer_id.u8;
if (cmd->eps_bearer_id.presence) if (cmd->eps_bearer_id.presence)
@ -961,36 +961,36 @@ void smf_s5c_handle_bearer_resource_command(
if (!bearer) { if (!bearer) {
ogs_error("No Context"); ogs_error("No Context");
cause_value = OGS_GTP_CAUSE_CONTEXT_NOT_FOUND; cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
} }
if (cause_value != OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
ogs_gtp_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp2_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, cause_value); OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, cause_value);
return; return;
} }
ogs_assert(bearer); ogs_assert(bearer);
decoded = ogs_gtp_parse_tft(&tft, &cmd->traffic_aggregate_description); decoded = ogs_gtp2_parse_tft(&tft, &cmd->traffic_aggregate_description);
ogs_assert(cmd->traffic_aggregate_description.len == decoded); ogs_assert(cmd->traffic_aggregate_description.len == decoded);
if (tft.code == OGS_GTP_TFT_CODE_NO_TFT_OPERATION) { if (tft.code == OGS_GTP2_TFT_CODE_NO_TFT_OPERATION) {
/* No operation */ /* No operation */
} else if (tft.code == OGS_GTP_TFT_CODE_DELETE_EXISTING_TFT) { } else if (tft.code == OGS_GTP2_TFT_CODE_DELETE_EXISTING_TFT) {
smf_pf_remove_all(bearer); smf_pf_remove_all(bearer);
tft_delete = 1; tft_delete = 1;
} else if (tft.code == } else if (tft.code ==
OGS_GTP_TFT_CODE_REPLACE_PACKET_FILTERS_IN_EXISTING) { OGS_GTP2_TFT_CODE_REPLACE_PACKET_FILTERS_IN_EXISTING) {
for (i = 0; i < tft.num_of_packet_filter && for (i = 0; i < tft.num_of_packet_filter &&
i < OGS_MAX_NUM_OF_FLOW_IN_GTP; i++) { i < OGS_MAX_NUM_OF_FLOW_IN_GTP; i++) {
pf = smf_pf_find_by_id(bearer, tft.pf[i].identifier+1); pf = smf_pf_find_by_id(bearer, tft.pf[i].identifier+1);
if (pf) { if (pf) {
if (reconfigure_packet_filter(pf, &tft, i) < 0) { if (reconfigure_packet_filter(pf, &tft, i) < 0) {
ogs_gtp_send_error_message( ogs_gtp2_send_error_message(
xact, sess ? sess->sgw_s5c_teid : 0, xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE,
OGS_GTP_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTER); OGS_GTP2_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTER);
return; return;
} }
/* /*
@ -1043,9 +1043,9 @@ void smf_s5c_handle_bearer_resource_command(
} }
} }
} else if (tft.code == } else if (tft.code ==
OGS_GTP_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT || OGS_GTP2_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT ||
tft.code == OGS_GTP_TFT_CODE_CREATE_NEW_TFT) { tft.code == OGS_GTP2_TFT_CODE_CREATE_NEW_TFT) {
if (tft.code == OGS_GTP_TFT_CODE_CREATE_NEW_TFT) if (tft.code == OGS_GTP2_TFT_CODE_CREATE_NEW_TFT)
smf_pf_remove_all(bearer); smf_pf_remove_all(bearer);
for (i = 0; i < tft.num_of_packet_filter && for (i = 0; i < tft.num_of_packet_filter &&
@ -1056,10 +1056,10 @@ void smf_s5c_handle_bearer_resource_command(
ogs_assert(pf); ogs_assert(pf);
if (reconfigure_packet_filter(pf, &tft, i) < 0) { if (reconfigure_packet_filter(pf, &tft, i) < 0) {
ogs_gtp_send_error_message( ogs_gtp2_send_error_message(
xact, sess ? sess->sgw_s5c_teid : 0, xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE,
OGS_GTP_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTER); OGS_GTP2_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTER);
return; return;
} }
/* /*
@ -1112,7 +1112,7 @@ void smf_s5c_handle_bearer_resource_command(
tft_update = 1; tft_update = 1;
} }
} else if (tft.code == } else if (tft.code ==
OGS_GTP_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING) { OGS_GTP2_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING) {
for (i = 0; i < tft.num_of_packet_filter && for (i = 0; i < tft.num_of_packet_filter &&
i <= OGS_MAX_NUM_OF_FLOW_IN_GTP; i++) { i <= OGS_MAX_NUM_OF_FLOW_IN_GTP; i++) {
pf = smf_pf_find_by_id(bearer, tft.pf[i].identifier+1); pf = smf_pf_find_by_id(bearer, tft.pf[i].identifier+1);
@ -1127,9 +1127,9 @@ void smf_s5c_handle_bearer_resource_command(
} }
if (cmd->flow_quality_of_service.presence) { if (cmd->flow_quality_of_service.presence) {
ogs_gtp_flow_qos_t flow_qos; ogs_gtp2_flow_qos_t flow_qos;
decoded = ogs_gtp_parse_flow_qos( decoded = ogs_gtp2_parse_flow_qos(
&flow_qos, &cmd->flow_quality_of_service); &flow_qos, &cmd->flow_quality_of_service);
ogs_assert(cmd->flow_quality_of_service.len == decoded); ogs_assert(cmd->flow_quality_of_service.len == decoded);
@ -1143,9 +1143,9 @@ void smf_s5c_handle_bearer_resource_command(
if (tft_update == 0 && tft_delete == 0 && qos_update == 0) { if (tft_update == 0 && tft_delete == 0 && qos_update == 0) {
/* No modification */ /* No modification */
ogs_gtp_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0, ogs_gtp2_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0,
OGS_GTP_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE,
OGS_GTP_CAUSE_SERVICE_NOT_SUPPORTED); OGS_GTP2_CAUSE_SERVICE_NOT_SUPPORTED);
return; return;
} }
@ -1164,12 +1164,12 @@ void smf_s5c_handle_bearer_resource_command(
bearer, xact, bearer, xact,
OGS_PFCP_MODIFY_DL_ONLY|OGS_PFCP_MODIFY_DEACTIVATE, OGS_PFCP_MODIFY_DL_ONLY|OGS_PFCP_MODIFY_DEACTIVATE,
cmd->procedure_transaction_id.u8, cmd->procedure_transaction_id.u8,
OGS_GTP_CAUSE_UNDEFINED_VALUE)); OGS_GTP2_CAUSE_UNDEFINED_VALUE));
} else { } else {
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.teid = sess->sgw_s5c_teid; h.teid = sess->sgw_s5c_teid;
h.type = OGS_GTP_UPDATE_BEARER_REQUEST_TYPE; h.type = OGS_GTP2_UPDATE_BEARER_REQUEST_TYPE;
pkbuf = smf_s5c_build_update_bearer_request( pkbuf = smf_s5c_build_update_bearer_request(
h.type, bearer, cmd->procedure_transaction_id.u8, h.type, bearer, cmd->procedure_transaction_id.u8,

View File

@ -27,31 +27,31 @@ extern "C" {
#endif #endif
void smf_s5c_handle_echo_request( void smf_s5c_handle_echo_request(
ogs_gtp_xact_t *xact, ogs_gtp_echo_request_t *req); ogs_gtp_xact_t *xact, ogs_gtp2_echo_request_t *req);
void smf_s5c_handle_echo_response( void smf_s5c_handle_echo_response(
ogs_gtp_xact_t *xact, ogs_gtp_echo_response_t *req); ogs_gtp_xact_t *xact, ogs_gtp2_echo_response_t *req);
void smf_s5c_handle_create_session_request( void smf_s5c_handle_create_session_request(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_create_session_request_t *req); ogs_gtp2_create_session_request_t *req);
void smf_s5c_handle_delete_session_request( void smf_s5c_handle_delete_session_request(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_delete_session_request_t *req); ogs_gtp2_delete_session_request_t *req);
void smf_s5c_handle_modify_bearer_request( void smf_s5c_handle_modify_bearer_request(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_modify_bearer_request_t *req); ogs_gtp2_modify_bearer_request_t *req);
void smf_s5c_handle_create_bearer_response( void smf_s5c_handle_create_bearer_response(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_create_bearer_response_t *req); ogs_gtp2_create_bearer_response_t *req);
void smf_s5c_handle_update_bearer_response( void smf_s5c_handle_update_bearer_response(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_update_bearer_response_t *req); ogs_gtp2_update_bearer_response_t *req);
void smf_s5c_handle_delete_bearer_response( void smf_s5c_handle_delete_bearer_response(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_delete_bearer_response_t *req); ogs_gtp2_delete_bearer_response_t *req);
void smf_s5c_handle_bearer_resource_command( void smf_s5c_handle_bearer_resource_command(
smf_sess_t *sess, ogs_gtp_xact_t *xact, smf_sess_t *sess, ogs_gtp_xact_t *xact,
ogs_gtp_bearer_resource_command_t *cmd); ogs_gtp2_bearer_resource_command_t *cmd);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -194,10 +194,10 @@ void smf_s6b_send_aar(smf_sess_t *sess, ogs_gtp_xact_t *xact)
ogs_assert(ret == 0); ogs_assert(ret == 0);
switch (sess->gtp_rat_type) { switch (sess->gtp_rat_type) {
case OGS_GTP_RAT_TYPE_EUTRAN: case OGS_GTP2_RAT_TYPE_EUTRAN:
val.i32 = OGS_DIAM_RAT_TYPE_EUTRAN; val.i32 = OGS_DIAM_RAT_TYPE_EUTRAN;
break; break;
case OGS_GTP_RAT_TYPE_WLAN: case OGS_GTP2_RAT_TYPE_WLAN:
val.i32 = OGS_DIAM_RAT_TYPE_WLAN; val.i32 = OGS_DIAM_RAT_TYPE_WLAN;
break; break;
default: default:

View File

@ -57,7 +57,7 @@ void smf_state_operational(ogs_fsm_t *s, smf_event_t *e)
ogs_gtp_node_t *gnode = NULL; ogs_gtp_node_t *gnode = NULL;
ogs_gtp_xact_t *gtp_xact = NULL; ogs_gtp_xact_t *gtp_xact = NULL;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp1_message_t gtp1_message; ogs_gtp1_message_t gtp1_message;
ogs_diam_gx_message_t *gx_message = NULL; ogs_diam_gx_message_t *gx_message = NULL;
@ -95,8 +95,8 @@ void smf_state_operational(ogs_fsm_t *s, smf_event_t *e)
recvbuf = e->pkbuf; recvbuf = e->pkbuf;
ogs_assert(recvbuf); ogs_assert(recvbuf);
if (ogs_gtp_parse_msg(&gtp_message, recvbuf) != OGS_OK) { if (ogs_gtp2_parse_msg(&gtp_message, recvbuf) != OGS_OK) {
ogs_error("ogs_gtp_parse_msg() failed"); ogs_error("ogs_gtp2_parse_msg() failed");
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
break; break;
} }
@ -120,13 +120,13 @@ void smf_state_operational(ogs_fsm_t *s, smf_event_t *e)
} }
switch(gtp_message.h.type) { switch(gtp_message.h.type) {
case OGS_GTP_ECHO_REQUEST_TYPE: case OGS_GTP2_ECHO_REQUEST_TYPE:
smf_s5c_handle_echo_request(gtp_xact, &gtp_message.echo_request); smf_s5c_handle_echo_request(gtp_xact, &gtp_message.echo_request);
break; break;
case OGS_GTP_ECHO_RESPONSE_TYPE: case OGS_GTP2_ECHO_RESPONSE_TYPE:
smf_s5c_handle_echo_response(gtp_xact, &gtp_message.echo_response); smf_s5c_handle_echo_response(gtp_xact, &gtp_message.echo_response);
break; break;
case OGS_GTP_CREATE_SESSION_REQUEST_TYPE: case OGS_GTP2_CREATE_SESSION_REQUEST_TYPE:
if (gtp_message.h.teid == 0) { if (gtp_message.h.teid == 0) {
ogs_expect(!sess); ogs_expect(!sess);
sess = smf_sess_add_by_gtp_message(&gtp_message); sess = smf_sess_add_by_gtp_message(&gtp_message);
@ -136,27 +136,27 @@ void smf_state_operational(ogs_fsm_t *s, smf_event_t *e)
smf_s5c_handle_create_session_request( smf_s5c_handle_create_session_request(
sess, gtp_xact, &gtp_message.create_session_request); sess, gtp_xact, &gtp_message.create_session_request);
break; break;
case OGS_GTP_DELETE_SESSION_REQUEST_TYPE: case OGS_GTP2_DELETE_SESSION_REQUEST_TYPE:
smf_s5c_handle_delete_session_request( smf_s5c_handle_delete_session_request(
sess, gtp_xact, &gtp_message.delete_session_request); sess, gtp_xact, &gtp_message.delete_session_request);
break; break;
case OGS_GTP_MODIFY_BEARER_REQUEST_TYPE: case OGS_GTP2_MODIFY_BEARER_REQUEST_TYPE:
smf_s5c_handle_modify_bearer_request( smf_s5c_handle_modify_bearer_request(
sess, gtp_xact, &gtp_message.modify_bearer_request); sess, gtp_xact, &gtp_message.modify_bearer_request);
break; break;
case OGS_GTP_CREATE_BEARER_RESPONSE_TYPE: case OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE:
smf_s5c_handle_create_bearer_response( smf_s5c_handle_create_bearer_response(
sess, gtp_xact, &gtp_message.create_bearer_response); sess, gtp_xact, &gtp_message.create_bearer_response);
break; break;
case OGS_GTP_UPDATE_BEARER_RESPONSE_TYPE: case OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE:
smf_s5c_handle_update_bearer_response( smf_s5c_handle_update_bearer_response(
sess, gtp_xact, &gtp_message.update_bearer_response); sess, gtp_xact, &gtp_message.update_bearer_response);
break; break;
case OGS_GTP_DELETE_BEARER_RESPONSE_TYPE: case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE:
smf_s5c_handle_delete_bearer_response( smf_s5c_handle_delete_bearer_response(
sess, gtp_xact, &gtp_message.delete_bearer_response); sess, gtp_xact, &gtp_message.delete_bearer_response);
break; break;
case OGS_GTP_BEARER_RESOURCE_COMMAND_TYPE: case OGS_GTP2_BEARER_RESOURCE_COMMAND_TYPE:
smf_s5c_handle_bearer_resource_command( smf_s5c_handle_bearer_resource_command(
sess, gtp_xact, &gtp_message.bearer_resource_command); sess, gtp_xact, &gtp_message.bearer_resource_command);
break; break;
@ -173,7 +173,7 @@ void smf_state_operational(ogs_fsm_t *s, smf_event_t *e)
ogs_assert(recvbuf); ogs_assert(recvbuf);
if (ogs_gtp1_parse_msg(&gtp1_message, recvbuf) != OGS_OK) { if (ogs_gtp1_parse_msg(&gtp1_message, recvbuf) != OGS_OK) {
ogs_error("ogs_gtp_parse_msg() failed"); ogs_error("ogs_gtp2_parse_msg() failed");
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
break; break;
} }

View File

@ -219,7 +219,7 @@ static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_sockaddr_t from; ogs_sockaddr_t from;
ogs_gtp_header_t *gtp_h = NULL; ogs_gtp2_header_t *gtp_h = NULL;
ogs_pfcp_user_plane_report_t report; ogs_pfcp_user_plane_report_t report;
uint32_t teid; uint32_t teid;
@ -244,8 +244,8 @@ static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
ogs_assert(pkbuf); ogs_assert(pkbuf);
ogs_assert(pkbuf->len); ogs_assert(pkbuf->len);
gtp_h = (ogs_gtp_header_t *)pkbuf->data; gtp_h = (ogs_gtp2_header_t *)pkbuf->data;
if (gtp_h->version != OGS_GTP_VERSION_1) { if (gtp_h->version != OGS_GTP2_VERSION_1) {
ogs_error("[DROP] Invalid GTPU version [%d]", gtp_h->version); ogs_error("[DROP] Invalid GTPU version [%d]", gtp_h->version);
ogs_log_hexdump(OGS_LOG_ERROR, pkbuf->data, pkbuf->len); ogs_log_hexdump(OGS_LOG_ERROR, pkbuf->data, pkbuf->len);
goto cleanup; goto cleanup;
@ -255,7 +255,7 @@ static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
ogs_pkbuf_t *echo_rsp; ogs_pkbuf_t *echo_rsp;
ogs_debug("[RECV] Echo Request from [%s]", OGS_ADDR(&from, buf)); ogs_debug("[RECV] Echo Request from [%s]", OGS_ADDR(&from, buf));
echo_rsp = ogs_gtp_handle_echo_req(pkbuf); echo_rsp = ogs_gtp2_handle_echo_req(pkbuf);
ogs_expect(echo_rsp); ogs_expect(echo_rsp);
if (echo_rsp) { if (echo_rsp) {
ssize_t sent; ssize_t sent;
@ -288,13 +288,13 @@ static void _gtpv1_u_recv_cb(short when, ogs_socket_t fd, void *data)
* Note 4 : For a GTP-PDU with several Extension Headers, the PDU * Note 4 : For a GTP-PDU with several Extension Headers, the PDU
* Session Container should be the first Extension Header * Session Container should be the first Extension Header
*/ */
ogs_gtp_extension_header_t *extension_header = ogs_gtp2_extension_header_t *extension_header =
(ogs_gtp_extension_header_t *)(pkbuf->data + OGS_GTPV1U_HEADER_LEN); (ogs_gtp2_extension_header_t *)(pkbuf->data + OGS_GTPV1U_HEADER_LEN);
ogs_assert(extension_header); ogs_assert(extension_header);
if (extension_header->type == if (extension_header->type ==
OGS_GTP_EXTENSION_HEADER_TYPE_PDU_SESSION_CONTAINER) { OGS_GTP2_EXTENSION_HEADER_TYPE_PDU_SESSION_CONTAINER) {
if (extension_header->pdu_type == if (extension_header->pdu_type ==
OGS_GTP_EXTENSION_HEADER_PDU_TYPE_UL_PDU_SESSION_INFORMATION) { OGS_GTP2_EXTENSION_HEADER_PDU_TYPE_UL_PDU_SESSION_INFORMATION) {
ogs_debug(" QFI [0x%x]", ogs_debug(" QFI [0x%x]",
extension_header->qos_flow_identifier); extension_header->qos_flow_identifier);
qfi = extension_header->qos_flow_identifier; qfi = extension_header->qos_flow_identifier;

View File

@ -64,7 +64,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "INTERNET", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "INTERNET", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -67,7 +67,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -64,7 +64,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -67,7 +67,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -494,7 +494,7 @@ static void test2_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -913,7 +913,7 @@ static void test3_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -1249,7 +1249,7 @@ static void test4_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -67,7 +67,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -401,7 +401,7 @@ static void test2_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -691,7 +691,7 @@ static void test3_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -69,7 +69,7 @@ static void issues_1431_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -210,7 +210,7 @@ static void issues_1431_func(abts_case *tc, void *data)
ogs_msleep(100); ogs_msleep(100);
/* Send PDN Connectivity Request */ /* Send PDN Connectivity Request */
sess = test_sess_find_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_find_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 2; sess->pti = 2;
@ -240,7 +240,7 @@ static void issues_1431_func(abts_case *tc, void *data)
ogs_msleep(100); ogs_msleep(100);
/* Send Attach Request - Integrity */ /* Send Attach Request - Integrity */
sess = test_sess_find_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_find_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 3; sess->pti = 3;

View File

@ -66,7 +66,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -347,7 +347,7 @@ static void test2_func(abts_case *tc, void *data)
test_ue[i]->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue[i]->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn( sess = test_sess_add_by_apn(
test_ue[i], "internet", OGS_GTP_RAT_TYPE_EUTRAN); test_ue[i], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/********** Insert Subscriber in Database */ /********** Insert Subscriber in Database */
@ -358,7 +358,7 @@ static void test2_func(abts_case *tc, void *data)
for (i = 0; i < NUM_OF_TEST_UE; i++) { for (i = 0; i < NUM_OF_TEST_UE; i++) {
sess = test_sess_find_by_apn( sess = test_sess_find_by_apn(
test_ue[i], "internet", OGS_GTP_RAT_TYPE_EUTRAN); test_ue[i], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* Send Attach Request */ /* Send Attach Request */
@ -574,7 +574,7 @@ static void test3_func(abts_case *tc, void *data)
test_ue[i]->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue[i]->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn( sess = test_sess_add_by_apn(
test_ue[i], "internet", OGS_GTP_RAT_TYPE_EUTRAN); test_ue[i], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/********** Insert Subscriber in Database */ /********** Insert Subscriber in Database */
@ -585,7 +585,7 @@ static void test3_func(abts_case *tc, void *data)
for (i = 0; i < NUM_OF_TEST_UE; i++) { for (i = 0; i < NUM_OF_TEST_UE; i++) {
sess = test_sess_find_by_apn( sess = test_sess_find_by_apn(
test_ue[i], "internet", OGS_GTP_RAT_TYPE_EUTRAN); test_ue[i], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* Send Attach Request */ /* Send Attach Request */

View File

@ -64,7 +64,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -232,7 +232,7 @@ static void test2_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -517,7 +517,7 @@ static void test3_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -1175,7 +1175,7 @@ test_bearer_t *test_bearer_find_by_ue_ebi(test_ue_t *test_ue, uint8_t ebi)
ogs_assert(test_ue); ogs_assert(test_ue);
ogs_list_for_each(&test_ue->sess_list, sess) { ogs_list_for_each(&test_ue->sess_list, sess) {
if (sess->gtp_rat_type != OGS_GTP_RAT_TYPE_EUTRAN) if (sess->gtp_rat_type != OGS_GTP2_RAT_TYPE_EUTRAN)
continue; continue;
bearer = test_bearer_find_by_sess_ebi(sess, ebi); bearer = test_bearer_find_by_sess_ebi(sess, ebi);

View File

@ -422,7 +422,7 @@ ogs_pkbuf_t *testesm_build_bearer_resource_modification_request(
&req->traffic_flow_aggregate; &req->traffic_flow_aggregate;
ogs_nas_eps_quality_of_service_t *qos = &req->required_traffic_flow_qos; ogs_nas_eps_quality_of_service_t *qos = &req->required_traffic_flow_qos;
ogs_gtp_tft_t tft; ogs_gtp2_tft_t tft;
ogs_tlv_octet_t octet; ogs_tlv_octet_t octet;
ogs_ipsubnet_t ipsubnet; ogs_ipsubnet_t ipsubnet;
@ -451,7 +451,7 @@ ogs_pkbuf_t *testesm_build_bearer_resource_modification_request(
memset(&tft, 0, sizeof tft); memset(&tft, 0, sizeof tft);
tft.code = tft_code; tft.code = tft_code;
if (tft.code == OGS_GTP_TFT_CODE_REPLACE_PACKET_FILTERS_IN_EXISTING) { if (tft.code == OGS_GTP2_TFT_CODE_REPLACE_PACKET_FILTERS_IN_EXISTING) {
tft.num_of_packet_filter = 1; tft.num_of_packet_filter = 1;
tft.pf[0].direction = 1; tft.pf[0].direction = 1;
tft.pf[0].identifier = 0; tft.pf[0].identifier = 0;
@ -465,7 +465,7 @@ ogs_pkbuf_t *testesm_build_bearer_resource_modification_request(
tft.pf[0].content.component[0].ipv4.mask = ipsubnet.mask[0]; tft.pf[0].content.component[0].ipv4.mask = ipsubnet.mask[0];
tft.pf[0].content.num_of_component = 1; tft.pf[0].content.num_of_component = 1;
} else if (tft.code == } else if (tft.code ==
OGS_GTP_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT) { OGS_GTP2_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT) {
tft.num_of_packet_filter = 1; tft.num_of_packet_filter = 1;
tft.pf[0].direction = 2; tft.pf[0].direction = 2;
tft.pf[0].identifier = 4; tft.pf[0].identifier = 4;
@ -491,7 +491,7 @@ ogs_pkbuf_t *testesm_build_bearer_resource_modification_request(
#endif #endif
tft.pf[0].content.num_of_component = 1; tft.pf[0].content.num_of_component = 1;
} else if (tft.code == OGS_GTP_TFT_CODE_CREATE_NEW_TFT) { } else if (tft.code == OGS_GTP2_TFT_CODE_CREATE_NEW_TFT) {
tft.num_of_packet_filter = 4; tft.num_of_packet_filter = 4;
tft.pf[0].direction = 1; tft.pf[0].direction = 1;
@ -590,15 +590,15 @@ ogs_pkbuf_t *testesm_build_bearer_resource_modification_request(
tft.pf[3].content.component[3].port.low = 20361; tft.pf[3].content.component[3].port.low = 20361;
tft.pf[3].content.num_of_component = 4; tft.pf[3].content.num_of_component = 4;
} else if (tft.code == } else if (tft.code ==
OGS_GTP_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING) { OGS_GTP2_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING) {
tft.num_of_packet_filter = 4; tft.num_of_packet_filter = 4;
tft.pf[0].identifier = 0; tft.pf[0].identifier = 0;
tft.pf[1].identifier = 1; tft.pf[1].identifier = 1;
tft.pf[2].identifier = 2; tft.pf[2].identifier = 2;
tft.pf[3].identifier = 3; tft.pf[3].identifier = 3;
} }
tad->length = ogs_gtp_build_tft(&octet, tad->length = ogs_gtp2_build_tft(&octet,
&tft, tad->buffer, OGS_GTP_MAX_TRAFFIC_FLOW_TEMPLATE); &tft, tad->buffer, OGS_GTP2_MAX_TRAFFIC_FLOW_TEMPLATE);
if (qci) { if (qci) {
req->presencemask |= req->presencemask |=

View File

@ -41,7 +41,7 @@ void testesm_handle_activate_default_eps_bearer_context_request(
&activate_default_eps_bearer_context_request->access_point_name; &activate_default_eps_bearer_context_request->access_point_name;
sess = test_sess_find_by_apn( sess = test_sess_find_by_apn(
test_ue, access_point_name->apn, OGS_GTP_RAT_TYPE_EUTRAN); test_ue, access_point_name->apn, OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
bearer = test_bearer_find_by_sess_ebi( bearer = test_bearer_find_by_sess_ebi(
sess, message->esm.h.eps_bearer_identity); sess, message->esm.h.eps_bearer_identity);

View File

@ -108,7 +108,7 @@ void testgtpu_recv(test_ue_t *test_ue, ogs_pkbuf_t *pkbuf)
test_sess_t *sess = NULL; test_sess_t *sess = NULL;
test_bearer_t *bearer = NULL; test_bearer_t *bearer = NULL;
ogs_gtp_header_t *gtp_h = NULL; ogs_gtp2_header_t *gtp_h = NULL;
struct ip6_hdr *ip6_h = NULL; struct ip6_hdr *ip6_h = NULL;
struct nd_router_advert *advert_h = NULL; struct nd_router_advert *advert_h = NULL;
struct nd_opt_prefix_info *prefix = NULL; struct nd_opt_prefix_info *prefix = NULL;
@ -119,10 +119,10 @@ void testgtpu_recv(test_ue_t *test_ue, ogs_pkbuf_t *pkbuf)
ogs_assert(test_ue); ogs_assert(test_ue);
ogs_assert(pkbuf); ogs_assert(pkbuf);
gtp_h = (ogs_gtp_header_t *)pkbuf->data; gtp_h = (ogs_gtp2_header_t *)pkbuf->data;
ogs_assert(gtp_h); ogs_assert(gtp_h);
ogs_assert(gtp_h->version == OGS_GTP_VERSION_1); ogs_assert(gtp_h->version == OGS_GTP1_VERSION_1);
ogs_assert(gtp_h->type == OGS_GTPU_MSGTYPE_GPDU); ogs_assert(gtp_h->type == OGS_GTPU_MSGTYPE_GPDU);
teid = be32toh(gtp_h->teid); teid = be32toh(gtp_h->teid);
@ -172,7 +172,7 @@ found:
int test_gtpu_send( int test_gtpu_send(
ogs_socknode_t *node, test_bearer_t *bearer, ogs_socknode_t *node, test_bearer_t *bearer,
ogs_gtp_header_t *gtp_hdesc, ogs_gtp_extension_header_t *ext_hdesc, ogs_gtp2_header_t *gtp_hdesc, ogs_gtp2_extension_header_t *ext_hdesc,
ogs_pkbuf_t *pkbuf) ogs_pkbuf_t *pkbuf)
{ {
ogs_gtp_node_t gnode; ogs_gtp_node_t gnode;
@ -214,9 +214,9 @@ int test_gtpu_send(
} }
ext_hdesc->pdu_type = ext_hdesc->pdu_type =
OGS_GTP_EXTENSION_HEADER_PDU_TYPE_UL_PDU_SESSION_INFORMATION; OGS_GTP2_EXTENSION_HEADER_PDU_TYPE_UL_PDU_SESSION_INFORMATION;
return ogs_gtp_send_user_plane(&gnode, gtp_hdesc, ext_hdesc, pkbuf); return ogs_gtp2_send_user_plane(&gnode, gtp_hdesc, ext_hdesc, pkbuf);
} }
int test_gtpu_send_ping( int test_gtpu_send_ping(
@ -225,8 +225,8 @@ int test_gtpu_send_ping(
int rv; int rv;
test_sess_t *sess = NULL; test_sess_t *sess = NULL;
ogs_gtp_header_t gtp_hdesc; ogs_gtp2_header_t gtp_hdesc;
ogs_gtp_extension_header_t ext_hdesc; ogs_gtp2_extension_header_t ext_hdesc;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_ipsubnet_t dst_ipsub; ogs_ipsubnet_t dst_ipsub;
@ -338,8 +338,8 @@ int test_gtpu_send_slacc_rs(ogs_socknode_t *node, test_bearer_t *bearer)
{ {
test_sess_t *sess = NULL; test_sess_t *sess = NULL;
ogs_gtp_header_t gtp_hdesc; ogs_gtp2_header_t gtp_hdesc;
ogs_gtp_extension_header_t ext_hdesc; ogs_gtp2_extension_header_t ext_hdesc;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
struct ip6_hdr *ip6_h = NULL; struct ip6_hdr *ip6_h = NULL;
@ -406,8 +406,8 @@ int test_gtpu_send_error_indication(
test_sess_t *sess = NULL; test_sess_t *sess = NULL;
uint32_t teid = 0; uint32_t teid = 0;
ogs_gtp_header_t gtp_hdesc; ogs_gtp2_header_t gtp_hdesc;
ogs_gtp_extension_header_t ext_hdesc; ogs_gtp2_extension_header_t ext_hdesc;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
@ -428,7 +428,7 @@ int test_gtpu_send_error_indication(
ogs_assert_if_reached(); ogs_assert_if_reached();
} }
pkbuf = ogs_gtp_build_error_indication(teid, node->addr); pkbuf = ogs_gtp2_build_error_indication(teid, node->addr);
ogs_assert(pkbuf); ogs_assert(pkbuf);
memset(&gtp_hdesc, 0, sizeof(gtp_hdesc)); memset(&gtp_hdesc, 0, sizeof(gtp_hdesc));
@ -436,7 +436,7 @@ int test_gtpu_send_error_indication(
gtp_hdesc.type = OGS_GTPU_MSGTYPE_ERR_IND; gtp_hdesc.type = OGS_GTPU_MSGTYPE_ERR_IND;
gtp_hdesc.flags = OGS_GTPU_FLAGS_S|OGS_GTPU_FLAGS_E; gtp_hdesc.flags = OGS_GTPU_FLAGS_S|OGS_GTPU_FLAGS_E;
ext_hdesc.type = OGS_GTP_EXTENSION_HEADER_TYPE_UDP_PORT; ext_hdesc.type = OGS_GTP2_EXTENSION_HEADER_TYPE_UDP_PORT;
return test_gtpu_send(node, bearer, &gtp_hdesc, &ext_hdesc, pkbuf); return test_gtpu_send(node, bearer, &gtp_hdesc, &ext_hdesc, pkbuf);
} }
@ -446,8 +446,8 @@ int test_gtpu_send_indirect_data_forwarding(
{ {
test_sess_t *sess = NULL; test_sess_t *sess = NULL;
ogs_gtp_header_t gtp_hdesc; ogs_gtp2_header_t gtp_hdesc;
ogs_gtp_extension_header_t ext_hdesc; ogs_gtp2_extension_header_t ext_hdesc;
ogs_assert(bearer); ogs_assert(bearer);
sess = bearer->sess; sess = bearer->sess;

View File

@ -35,7 +35,7 @@ void testgtpu_recv(test_ue_t *test_ue, ogs_pkbuf_t *pkbuf);
int test_gtpu_send( int test_gtpu_send(
ogs_socknode_t *node, test_bearer_t *bearer, ogs_socknode_t *node, test_bearer_t *bearer,
ogs_gtp_header_t *gtp_hdesc, ogs_gtp_extension_header_t *ext_hdesc, ogs_gtp2_header_t *gtp_hdesc, ogs_gtp2_extension_header_t *ext_hdesc,
ogs_pkbuf_t *pkbuf); ogs_pkbuf_t *pkbuf);
int test_gtpu_send_ping( int test_gtpu_send_ping(
ogs_socknode_t *node, test_bearer_t *bearer, const char *dst_ip); ogs_socknode_t *node, test_bearer_t *bearer, const char *dst_ip);

View File

@ -2303,7 +2303,7 @@ static ogs_pkbuf_t *testngap_build_pdu_session_resource_setup_response_trasfer(
int rv; int rv;
test_bearer_t *qos_flow = NULL; test_bearer_t *qos_flow = NULL;
ogs_gtp_f_teid_t f_teid; ogs_gtp2_f_teid_t f_teid;
ogs_ip_t ip; ogs_ip_t ip;
int len; int len;
@ -2332,11 +2332,11 @@ static ogs_pkbuf_t *testngap_build_pdu_session_resource_setup_response_trasfer(
uPTransportLayerInformation->choice.gTPTunnel = gTPTunnel; uPTransportLayerInformation->choice.gTPTunnel = gTPTunnel;
ogs_assert(sess->gnb_n3_addr || sess->gnb_n3_addr6); ogs_assert(sess->gnb_n3_addr || sess->gnb_n3_addr6);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
sess->gnb_n3_addr, sess->gnb_n3_addr6, &f_teid, &len); sess->gnb_n3_addr, sess->gnb_n3_addr6, &f_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
rv = ogs_gtp_f_teid_to_ip(&f_teid, &ip); rv = ogs_gtp2_f_teid_to_ip(&f_teid, &ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
ogs_asn_ip_to_BIT_STRING(&ip, &gTPTunnel->transportLayerAddress); ogs_asn_ip_to_BIT_STRING(&ip, &gTPTunnel->transportLayerAddress);
@ -2422,7 +2422,7 @@ static ogs_pkbuf_t *testngap_build_path_switch_request_trasfer(
test_bearer_t *qos_flow = NULL; test_bearer_t *qos_flow = NULL;
ogs_gtp_f_teid_t f_teid; ogs_gtp2_f_teid_t f_teid;
ogs_ip_t ip; ogs_ip_t ip;
int len; int len;
@ -2446,11 +2446,11 @@ static ogs_pkbuf_t *testngap_build_path_switch_request_trasfer(
dL_NGU_UP_TNLInformation->choice.gTPTunnel = gTPTunnel; dL_NGU_UP_TNLInformation->choice.gTPTunnel = gTPTunnel;
ogs_assert(sess->gnb_n3_addr || sess->gnb_n3_addr6); ogs_assert(sess->gnb_n3_addr || sess->gnb_n3_addr6);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
sess->gnb_n3_addr, sess->gnb_n3_addr6, &f_teid, &len); sess->gnb_n3_addr, sess->gnb_n3_addr6, &f_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
rv = ogs_gtp_f_teid_to_ip(&f_teid, &ip); rv = ogs_gtp2_f_teid_to_ip(&f_teid, &ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
ogs_asn_ip_to_BIT_STRING(&ip, &gTPTunnel->transportLayerAddress); ogs_asn_ip_to_BIT_STRING(&ip, &gTPTunnel->transportLayerAddress);
@ -2476,7 +2476,7 @@ static ogs_pkbuf_t *testngap_build_handover_required_transfer(
test_bearer_t *qos_flow = NULL; test_bearer_t *qos_flow = NULL;
ogs_gtp_f_teid_t f_teid; ogs_gtp2_f_teid_t f_teid;
ogs_ip_t ip; ogs_ip_t ip;
int len; int len;
@ -2507,7 +2507,7 @@ static ogs_pkbuf_t *testngap_build_handover_request_ack_transfer(
int rv; int rv;
test_bearer_t *qos_flow = NULL; test_bearer_t *qos_flow = NULL;
ogs_gtp_f_teid_t f_teid; ogs_gtp2_f_teid_t f_teid;
ogs_ip_t ip; ogs_ip_t ip;
int len; int len;
@ -2532,11 +2532,11 @@ static ogs_pkbuf_t *testngap_build_handover_request_ack_transfer(
ogs_assert(gTPTunnel); ogs_assert(gTPTunnel);
ogs_assert(sess->gnb_n3_addr || sess->gnb_n3_addr6); ogs_assert(sess->gnb_n3_addr || sess->gnb_n3_addr6);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
sess->gnb_n3_addr, sess->gnb_n3_addr6, &f_teid, &len); sess->gnb_n3_addr, sess->gnb_n3_addr6, &f_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
rv = ogs_gtp_f_teid_to_ip(&f_teid, &ip); rv = ogs_gtp2_f_teid_to_ip(&f_teid, &ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
ogs_asn_ip_to_BIT_STRING(&ip, &gTPTunnel->transportLayerAddress); ogs_asn_ip_to_BIT_STRING(&ip, &gTPTunnel->transportLayerAddress);

View File

@ -472,7 +472,7 @@ ogs_pkbuf_t *test_s1ap_build_initial_context_setup_response(test_ue_t *test_ue)
test_sess_t *sess = NULL; test_sess_t *sess = NULL;
test_bearer_t *bearer = NULL; test_bearer_t *bearer = NULL;
ogs_gtp_f_teid_t f_teid; ogs_gtp2_f_teid_t f_teid;
ogs_ip_t ip; ogs_ip_t ip;
int len; int len;
@ -553,11 +553,11 @@ ogs_pkbuf_t *test_s1ap_build_initial_context_setup_response(test_ue_t *test_ue)
e_rab->e_RAB_ID = bearer->ebi; e_rab->e_RAB_ID = bearer->ebi;
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
bearer->enb_s1u_addr, bearer->enb_s1u_addr6, &f_teid, &len); bearer->enb_s1u_addr, bearer->enb_s1u_addr6, &f_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
rv = ogs_gtp_f_teid_to_ip(&f_teid, &ip); rv = ogs_gtp2_f_teid_to_ip(&f_teid, &ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
rv = ogs_asn_ip_to_BIT_STRING(&ip, &e_rab->transportLayerAddress); rv = ogs_asn_ip_to_BIT_STRING(&ip, &e_rab->transportLayerAddress);
@ -827,7 +827,7 @@ ogs_pkbuf_t *test_s1ap_build_e_rab_setup_response(test_bearer_t *bearer)
S1AP_E_RABSetupItemBearerSUResIEs_t *item = NULL; S1AP_E_RABSetupItemBearerSUResIEs_t *item = NULL;
S1AP_E_RABSetupItemBearerSURes_t *e_rab = NULL; S1AP_E_RABSetupItemBearerSURes_t *e_rab = NULL;
ogs_gtp_f_teid_t f_teid; ogs_gtp2_f_teid_t f_teid;
ogs_ip_t ip; ogs_ip_t ip;
int len; int len;
@ -893,11 +893,11 @@ ogs_pkbuf_t *test_s1ap_build_e_rab_setup_response(test_bearer_t *bearer)
e_rab->e_RAB_ID = bearer->ebi; e_rab->e_RAB_ID = bearer->ebi;
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
bearer->enb_s1u_addr, bearer->enb_s1u_addr6, &f_teid, &len); bearer->enb_s1u_addr, bearer->enb_s1u_addr6, &f_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
rv = ogs_gtp_f_teid_to_ip(&f_teid, &ip); rv = ogs_gtp2_f_teid_to_ip(&f_teid, &ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
rv = ogs_asn_ip_to_BIT_STRING(&ip, &e_rab->transportLayerAddress); rv = ogs_asn_ip_to_BIT_STRING(&ip, &e_rab->transportLayerAddress);
@ -1229,7 +1229,7 @@ ogs_pkbuf_t *test_s1ap_build_e_rab_modification_indication(test_ue_t *test_ue)
S1AP_E_RABToBeModifiedItemBearerModIndIEs_t *item = NULL; S1AP_E_RABToBeModifiedItemBearerModIndIEs_t *item = NULL;
S1AP_E_RABToBeModifiedItemBearerModInd_t *e_rab = NULL; S1AP_E_RABToBeModifiedItemBearerModInd_t *e_rab = NULL;
ogs_gtp_f_teid_t f_teid; ogs_gtp2_f_teid_t f_teid;
ogs_ip_t ip; ogs_ip_t ip;
int len; int len;
@ -1245,11 +1245,11 @@ ogs_pkbuf_t *test_s1ap_build_e_rab_modification_indication(test_ue_t *test_ue)
e_rab->e_RAB_ID = bearer->ebi; e_rab->e_RAB_ID = bearer->ebi;
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
bearer->enb_s1u_addr, bearer->enb_s1u_addr6, &f_teid, &len); bearer->enb_s1u_addr, bearer->enb_s1u_addr6, &f_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
rv = ogs_gtp_f_teid_to_ip(&f_teid, &ip); rv = ogs_gtp2_f_teid_to_ip(&f_teid, &ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
rv = ogs_asn_ip_to_BIT_STRING(&ip, &e_rab->transportLayerAddress); rv = ogs_asn_ip_to_BIT_STRING(&ip, &e_rab->transportLayerAddress);
@ -1357,7 +1357,7 @@ ogs_pkbuf_t *test_s1ap_build_path_switch_request(test_ue_t *test_ue)
S1AP_E_RABToBeSwitchedDLItemIEs_t *item = NULL; S1AP_E_RABToBeSwitchedDLItemIEs_t *item = NULL;
S1AP_E_RABToBeSwitchedDLItem_t *e_rab = NULL; S1AP_E_RABToBeSwitchedDLItem_t *e_rab = NULL;
ogs_gtp_f_teid_t f_teid; ogs_gtp2_f_teid_t f_teid;
ogs_ip_t ip; ogs_ip_t ip;
int len; int len;
@ -1372,11 +1372,11 @@ ogs_pkbuf_t *test_s1ap_build_path_switch_request(test_ue_t *test_ue)
e_rab->e_RAB_ID = bearer->ebi; e_rab->e_RAB_ID = bearer->ebi;
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
bearer->enb_s1u_addr, bearer->enb_s1u_addr6, &f_teid, &len); bearer->enb_s1u_addr, bearer->enb_s1u_addr6, &f_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
rv = ogs_gtp_f_teid_to_ip(&f_teid, &ip); rv = ogs_gtp2_f_teid_to_ip(&f_teid, &ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
rv = ogs_asn_ip_to_BIT_STRING(&ip, &e_rab->transportLayerAddress); rv = ogs_asn_ip_to_BIT_STRING(&ip, &e_rab->transportLayerAddress);
@ -1635,7 +1635,7 @@ ogs_pkbuf_t *test_s1ap_build_handover_request_ack(test_ue_t *test_ue)
S1AP_E_RABAdmittedItemIEs_t *item = NULL; S1AP_E_RABAdmittedItemIEs_t *item = NULL;
S1AP_E_RABAdmittedItem_t *e_rab = NULL; S1AP_E_RABAdmittedItem_t *e_rab = NULL;
ogs_gtp_f_teid_t f_teid; ogs_gtp2_f_teid_t f_teid;
ogs_ip_t ip; ogs_ip_t ip;
int len; int len;
@ -1651,11 +1651,11 @@ ogs_pkbuf_t *test_s1ap_build_handover_request_ack(test_ue_t *test_ue)
e_rab->e_RAB_ID = bearer->ebi; e_rab->e_RAB_ID = bearer->ebi;
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
bearer->enb_s1u_addr, bearer->enb_s1u_addr6, &f_teid, &len); bearer->enb_s1u_addr, bearer->enb_s1u_addr6, &f_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
rv = ogs_gtp_f_teid_to_ip(&f_teid, &ip); rv = ogs_gtp2_f_teid_to_ip(&f_teid, &ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
rv = ogs_asn_ip_to_BIT_STRING(&ip, &e_rab->transportLayerAddress); rv = ogs_asn_ip_to_BIT_STRING(&ip, &e_rab->transportLayerAddress);

View File

@ -66,7 +66,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -66,7 +66,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -66,7 +66,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -355,7 +355,7 @@ static void test2_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -555,7 +555,7 @@ static void test3_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -841,7 +841,7 @@ static void test4_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -66,7 +66,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -66,7 +66,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -66,7 +66,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -66,7 +66,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -67,7 +67,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* Two eNB connects to MME */ /* Two eNB connects to MME */
@ -637,7 +637,7 @@ static void test2_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* Two eNB connects to MME */ /* Two eNB connects to MME */
@ -964,7 +964,7 @@ static void test3_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* Two eNB connects to MME */ /* Two eNB connects to MME */

View File

@ -64,7 +64,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* Two eNB connects to MME */ /* Two eNB connects to MME */

View File

@ -115,7 +115,7 @@ static void test1_func(abts_case *tc, void *data)
ABTS_INT_EQUAL(tc, OGS_OK, test_db_insert_ue(test_ue, doc)); ABTS_INT_EQUAL(tc, OGS_OK, test_db_insert_ue(test_ue, doc));
/* Setup WLAN Session */ /* Setup WLAN Session */
sess = test_sess_add_by_apn(test_ue, "wlan", OGS_GTP_RAT_TYPE_WLAN); sess = test_sess_add_by_apn(test_ue, "wlan", OGS_GTP2_RAT_TYPE_WLAN);
ogs_assert(sess); ogs_assert(sess);
OGS_SETUP_GTP_NODE(sess, ogs_list_first(&test_self()->gtpc_list)); OGS_SETUP_GTP_NODE(sess, ogs_list_first(&test_self()->gtpc_list));
@ -261,7 +261,7 @@ static void test2_func(abts_case *tc, void *data)
ABTS_INT_EQUAL(tc, OGS_OK, test_db_insert_ue(test_ue, doc)); ABTS_INT_EQUAL(tc, OGS_OK, test_db_insert_ue(test_ue, doc));
/* Setup WLAN Session */ /* Setup WLAN Session */
sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_WLAN); sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_WLAN);
ogs_assert(sess); ogs_assert(sess);
OGS_SETUP_GTP_NODE(sess, ogs_list_first(&test_self()->gtpc_list)); OGS_SETUP_GTP_NODE(sess, ogs_list_first(&test_self()->gtpc_list));
@ -412,7 +412,7 @@ static void test3_func(abts_case *tc, void *data)
ABTS_INT_EQUAL(tc, OGS_OK, test_db_insert_ue(test_ue, doc)); ABTS_INT_EQUAL(tc, OGS_OK, test_db_insert_ue(test_ue, doc));
/* Setup WLAN Session */ /* Setup WLAN Session */
sess = test_sess_add_by_apn(test_ue, "wlan", OGS_GTP_RAT_TYPE_WLAN); sess = test_sess_add_by_apn(test_ue, "wlan", OGS_GTP2_RAT_TYPE_WLAN);
ogs_assert(sess); ogs_assert(sess);
OGS_SETUP_GTP_NODE(sess, ogs_list_first(&test_self()->gtpc_list)); OGS_SETUP_GTP_NODE(sess, ogs_list_first(&test_self()->gtpc_list));
@ -438,7 +438,7 @@ static void test3_func(abts_case *tc, void *data)
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
/* Setup EUTRAN Session */ /* Setup EUTRAN Session */
sess = test_sess_add_by_apn(test_ue, "wlan", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "wlan", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* Send Attach Request */ /* Send Attach Request */
@ -556,7 +556,7 @@ static void test3_func(abts_case *tc, void *data)
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
/* Receive S2b Delete Session Response */ /* Receive S2b Delete Session Response */
sess = test_sess_find_by_apn(test_ue, "wlan", OGS_GTP_RAT_TYPE_WLAN); sess = test_sess_find_by_apn(test_ue, "wlan", OGS_GTP2_RAT_TYPE_WLAN);
ogs_assert(sess); ogs_assert(sess);
recvbuf = test_epdg_read(epdg_c); recvbuf = test_epdg_read(epdg_c);
@ -564,7 +564,7 @@ static void test3_func(abts_case *tc, void *data)
test_s2b_recv(sess, recvbuf); test_s2b_recv(sess, recvbuf);
/* Send PDN Connectivity Request */ /* Send PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 5; sess->pti = 5;
@ -606,7 +606,7 @@ static void test3_func(abts_case *tc, void *data)
ABTS_INT_EQUAL(tc, OGS_OK, rv); ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Setup WLAN Session */ /* Setup WLAN Session */
sess = test_sess_add_by_apn(test_ue, "wlan", OGS_GTP_RAT_TYPE_WLAN); sess = test_sess_add_by_apn(test_ue, "wlan", OGS_GTP2_RAT_TYPE_WLAN);
ogs_assert(sess); ogs_assert(sess);
OGS_SETUP_GTP_NODE(sess, ogs_list_first(&test_self()->gtpc_list)); OGS_SETUP_GTP_NODE(sess, ogs_list_first(&test_self()->gtpc_list));
@ -641,7 +641,7 @@ static void test3_func(abts_case *tc, void *data)
test_ue->s1ap_procedure_code); test_ue->s1ap_procedure_code);
/* Send E-RABReleaseResponse */ /* Send E-RABReleaseResponse */
sess = test_sess_find_by_apn(test_ue, "wlan", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_find_by_apn(test_ue, "wlan", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
bearer = test_bearer_find_by_sess_ebi(sess, 5); bearer = test_bearer_find_by_sess_ebi(sess, 5);
@ -665,7 +665,7 @@ static void test3_func(abts_case *tc, void *data)
ogs_msleep(300); ogs_msleep(300);
/* Setup EUTRAN Session */ /* Setup EUTRAN Session */
sess = test_sess_add_by_apn(test_ue, "wlan", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "wlan", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pdn_connectivity_param.apn = 1; sess->pdn_connectivity_param.apn = 1;
@ -715,7 +715,7 @@ static void test3_func(abts_case *tc, void *data)
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
/* Receive S2b Delete Session Response */ /* Receive S2b Delete Session Response */
sess = test_sess_find_by_apn(test_ue, "wlan", OGS_GTP_RAT_TYPE_WLAN); sess = test_sess_find_by_apn(test_ue, "wlan", OGS_GTP2_RAT_TYPE_WLAN);
ogs_assert(sess); ogs_assert(sess);
recvbuf = test_epdg_read(epdg_c); recvbuf = test_epdg_read(epdg_c);

View File

@ -79,15 +79,15 @@ ogs_pkbuf_t *test_epdg_read(ogs_socknode_t *node)
void test_s2b_recv(test_sess_t *sess, ogs_pkbuf_t *pkbuf) void test_s2b_recv(test_sess_t *sess, ogs_pkbuf_t *pkbuf)
{ {
int rv; int rv;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
ogs_assert(sess); ogs_assert(sess);
ogs_assert(sess->gnode); ogs_assert(sess->gnode);
ogs_assert(pkbuf); ogs_assert(pkbuf);
if (ogs_gtp_parse_msg(&gtp_message, pkbuf) != OGS_OK) { if (ogs_gtp2_parse_msg(&gtp_message, pkbuf) != OGS_OK) {
ogs_error("ogs_gtp_parse_msg() failed"); ogs_error("ogs_gtp2_parse_msg() failed");
ogs_pkbuf_free(pkbuf); ogs_pkbuf_free(pkbuf);
return; return;
} }
@ -100,19 +100,19 @@ void test_s2b_recv(test_sess_t *sess, ogs_pkbuf_t *pkbuf)
} }
switch (gtp_message.h.type) { switch (gtp_message.h.type) {
case OGS_GTP_CREATE_SESSION_RESPONSE_TYPE: case OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE:
test_s2b_handle_create_session_response( test_s2b_handle_create_session_response(
xact, sess, &gtp_message.create_session_response); xact, sess, &gtp_message.create_session_response);
break; break;
case OGS_GTP_DELETE_SESSION_RESPONSE_TYPE: case OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE:
test_s2b_handle_delete_session_response( test_s2b_handle_delete_session_response(
xact, sess, &gtp_message.delete_session_response); xact, sess, &gtp_message.delete_session_response);
break; break;
case OGS_GTP_CREATE_BEARER_REQUEST_TYPE: case OGS_GTP2_CREATE_BEARER_REQUEST_TYPE:
test_s2b_handle_create_bearer_request( test_s2b_handle_create_bearer_request(
xact, sess, &gtp_message.create_bearer_request); xact, sess, &gtp_message.create_bearer_request);
break; break;
case OGS_GTP_DELETE_BEARER_REQUEST_TYPE: case OGS_GTP2_DELETE_BEARER_REQUEST_TYPE:
test_s2b_handle_delete_bearer_request( test_s2b_handle_delete_bearer_request(
xact, sess, &gtp_message.delete_bearer_request); xact, sess, &gtp_message.delete_bearer_request);
break; break;
@ -127,14 +127,14 @@ void test_s2b_recv(test_sess_t *sess, ogs_pkbuf_t *pkbuf)
int test_s2b_send_create_session_request(test_sess_t *sess, bool handover_ind) int test_s2b_send_create_session_request(test_sess_t *sess, bool handover_ind)
{ {
int rv; int rv;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
ogs_assert(sess); ogs_assert(sess);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_CREATE_SESSION_REQUEST_TYPE; h.type = OGS_GTP2_CREATE_SESSION_REQUEST_TYPE;
h.teid = sess->smf_s2b_c_teid; h.teid = sess->smf_s2b_c_teid;
pkbuf = test_s2b_build_create_session_request(h.type, sess, handover_ind); pkbuf = test_s2b_build_create_session_request(h.type, sess, handover_ind);
@ -152,14 +152,14 @@ int test_s2b_send_create_session_request(test_sess_t *sess, bool handover_ind)
int test_s2b_send_delete_session_request(test_sess_t *sess) int test_s2b_send_delete_session_request(test_sess_t *sess)
{ {
int rv; int rv;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_gtp_xact_t *xact = NULL; ogs_gtp_xact_t *xact = NULL;
ogs_assert(sess); ogs_assert(sess);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_DELETE_SESSION_REQUEST_TYPE; h.type = OGS_GTP2_DELETE_SESSION_REQUEST_TYPE;
h.teid = sess->smf_s2b_c_teid; h.teid = sess->smf_s2b_c_teid;
pkbuf = test_s2b_build_delete_session_request(h.type, sess); pkbuf = test_s2b_build_delete_session_request(h.type, sess);
@ -178,7 +178,7 @@ int test_s2b_send_create_bearer_response(
test_bearer_t *bearer, ogs_gtp_xact_t *xact) test_bearer_t *bearer, ogs_gtp_xact_t *xact)
{ {
int rv; int rv;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
test_sess_t *sess = NULL; test_sess_t *sess = NULL;
@ -187,8 +187,8 @@ int test_s2b_send_create_bearer_response(
sess = bearer->sess; sess = bearer->sess;
ogs_assert(sess); ogs_assert(sess);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_CREATE_BEARER_RESPONSE_TYPE; h.type = OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE;
h.teid = sess->smf_s2b_c_teid; h.teid = sess->smf_s2b_c_teid;
pkbuf = test_s2b_build_create_bearer_response(h.type, bearer); pkbuf = test_s2b_build_create_bearer_response(h.type, bearer);
@ -207,7 +207,7 @@ int test_s2b_send_delete_bearer_response(
test_bearer_t *bearer, ogs_gtp_xact_t *xact) test_bearer_t *bearer, ogs_gtp_xact_t *xact)
{ {
int rv; int rv;
ogs_gtp_header_t h; ogs_gtp2_header_t h;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
test_sess_t *sess = NULL; test_sess_t *sess = NULL;
@ -216,8 +216,8 @@ int test_s2b_send_delete_bearer_response(
sess = bearer->sess; sess = bearer->sess;
ogs_assert(sess); ogs_assert(sess);
memset(&h, 0, sizeof(ogs_gtp_header_t)); memset(&h, 0, sizeof(ogs_gtp2_header_t));
h.type = OGS_GTP_DELETE_BEARER_RESPONSE_TYPE; h.type = OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE;
h.teid = sess->smf_s2b_c_teid; h.teid = sess->smf_s2b_c_teid;
pkbuf = test_s2b_build_delete_bearer_response(h.type, bearer); pkbuf = test_s2b_build_delete_bearer_response(h.type, bearer);

View File

@ -26,24 +26,24 @@ ogs_pkbuf_t *test_s2b_build_create_session_request(
ogs_session_t *session = NULL; ogs_session_t *session = NULL;
test_ue_t *test_ue = NULL; test_ue_t *test_ue = NULL;
test_bearer_t *bearer = NULL; test_bearer_t *bearer = NULL;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_create_session_request_t *req = &gtp_message.create_session_request; ogs_gtp2_create_session_request_t *req = &gtp_message.create_session_request;
uint8_t msisdn_buf[OGS_MAX_MSISDN_LEN]; uint8_t msisdn_buf[OGS_MAX_MSISDN_LEN];
int msisdn_len; int msisdn_len;
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
char uli_buf[OGS_GTP_MAX_ULI_LEN]; char uli_buf[OGS_GTP2_MAX_ULI_LEN];
ogs_gtp_f_teid_t test_s2b_c_teid, test_s2b_u_teid; ogs_gtp2_f_teid_t test_s2b_c_teid, test_s2b_u_teid;
int len; int len;
ogs_paa_t paa; ogs_paa_t paa;
ogs_gtp_ambr_t ambr; ogs_gtp2_ambr_t ambr;
ogs_gtp_bearer_qos_t bearer_qos; ogs_gtp2_bearer_qos_t bearer_qos;
char bearer_qos_buf[GTP_BEARER_QOS_LEN]; char bearer_qos_buf[GTP2_BEARER_QOS_LEN];
char apn[OGS_MAX_APN_LEN+1]; char apn[OGS_MAX_APN_LEN+1];
ogs_gtp_indication_t indication; ogs_gtp2_indication_t indication;
ogs_assert(sess); ogs_assert(sess);
test_ue = sess->test_ue; test_ue = sess->test_ue;
@ -55,14 +55,14 @@ ogs_pkbuf_t *test_s2b_build_create_session_request(
ogs_assert(bearer); ogs_assert(bearer);
ogs_debug("Create Session Request"); ogs_debug("Create Session Request");
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
if (handover_ind == true) { if (handover_ind == true) {
memset(&indication, 0, sizeof(ogs_gtp_indication_t)); memset(&indication, 0, sizeof(ogs_gtp2_indication_t));
indication.handover_indication = 1; indication.handover_indication = 1;
req->indication_flags.presence = 1; req->indication_flags.presence = 1;
req->indication_flags.data = &indication; req->indication_flags.data = &indication;
req->indication_flags.len = sizeof(ogs_gtp_indication_t); req->indication_flags.len = sizeof(ogs_gtp2_indication_t);
} }
ogs_assert(test_ue->imsi_len); ogs_assert(test_ue->imsi_len);
@ -76,7 +76,7 @@ ogs_pkbuf_t *test_s2b_build_create_session_request(
req->msisdn.data = msisdn_buf; req->msisdn.data = msisdn_buf;
req->msisdn.len = msisdn_len; req->msisdn.len = msisdn_len;
memset(&uli, 0, sizeof(ogs_gtp_uli_t)); memset(&uli, 0, sizeof(ogs_gtp2_uli_t));
uli.flags.e_cgi = 1; uli.flags.e_cgi = 1;
uli.flags.tai = 1; uli.flags.tai = 1;
ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &test_ue->e_tai.plmn_id); ogs_nas_from_plmn_id(&uli.tai.nas_plmn_id, &test_ue->e_tai.plmn_id);
@ -84,21 +84,21 @@ ogs_pkbuf_t *test_s2b_build_create_session_request(
ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &test_ue->e_cgi.plmn_id); ogs_nas_from_plmn_id(&uli.e_cgi.nas_plmn_id, &test_ue->e_cgi.plmn_id);
uli.e_cgi.cell_id = test_ue->e_cgi.cell_id; uli.e_cgi.cell_id = test_ue->e_cgi.cell_id;
req->user_location_information.presence = 1; req->user_location_information.presence = 1;
ogs_gtp_build_uli(&req->user_location_information, &uli, ogs_gtp2_build_uli(&req->user_location_information, &uli,
uli_buf, OGS_GTP_MAX_ULI_LEN); uli_buf, OGS_GTP2_MAX_ULI_LEN);
req->serving_network.presence = 1; req->serving_network.presence = 1;
req->serving_network.data = &uli.tai.nas_plmn_id; req->serving_network.data = &uli.tai.nas_plmn_id;
req->serving_network.len = sizeof(uli.tai.nas_plmn_id); req->serving_network.len = sizeof(uli.tai.nas_plmn_id);
req->rat_type.presence = 1; req->rat_type.presence = 1;
req->rat_type.u8 = OGS_GTP_RAT_TYPE_WLAN; req->rat_type.u8 = OGS_GTP2_RAT_TYPE_WLAN;
memset(&test_s2b_c_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&test_s2b_c_teid, 0, sizeof(ogs_gtp2_f_teid_t));
test_s2b_c_teid.interface_type = OGS_GTP_F_TEID_S2B_EPDG_GTP_C; test_s2b_c_teid.interface_type = OGS_GTP2_F_TEID_S2B_EPDG_GTP_C;
test_s2b_c_teid.teid = htobe32(sess->epdg_s2b_c_teid); test_s2b_c_teid.teid = htobe32(sess->epdg_s2b_c_teid);
ogs_assert(sess->gnode->sock); ogs_assert(sess->gnode->sock);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
&sess->gnode->sock->local_addr, NULL, &test_s2b_c_teid, &len); &sess->gnode->sock->local_addr, NULL, &test_s2b_c_teid, &len);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
req->sender_f_teid_for_control_plane.presence = 1; req->sender_f_teid_for_control_plane.presence = 1;
@ -112,7 +112,7 @@ ogs_pkbuf_t *test_s2b_build_create_session_request(
req->selection_mode.presence = 1; req->selection_mode.presence = 1;
req->selection_mode.u8 = req->selection_mode.u8 =
OGS_GTP_SELECTION_MODE_MS_OR_NETWORK_PROVIDED_APN; OGS_GTP2_SELECTION_MODE_MS_OR_NETWORK_PROVIDED_APN;
memset(&paa, 0, sizeof(paa)); memset(&paa, 0, sizeof(paa));
paa.session_type = OGS_PDU_SESSION_TYPE_IPV4V6; paa.session_type = OGS_PDU_SESSION_TYPE_IPV4V6;
@ -121,7 +121,7 @@ ogs_pkbuf_t *test_s2b_build_create_session_request(
req->pdn_address_allocation.data = &paa; req->pdn_address_allocation.data = &paa;
req->pdn_address_allocation.len = OGS_PAA_IPV4V6_LEN; req->pdn_address_allocation.len = OGS_PAA_IPV4V6_LEN;
memset(&ambr, 0, sizeof(ogs_gtp_ambr_t)); memset(&ambr, 0, sizeof(ogs_gtp2_ambr_t));
ambr.uplink = htobe32(50000); ambr.uplink = htobe32(50000);
ambr.downlink = htobe32(150000); ambr.downlink = htobe32(150000);
req->aggregate_maximum_bit_rate.presence = 1; req->aggregate_maximum_bit_rate.presence = 1;
@ -132,11 +132,11 @@ ogs_pkbuf_t *test_s2b_build_create_session_request(
req->bearer_contexts_to_be_created.eps_bearer_id.presence = 1; req->bearer_contexts_to_be_created.eps_bearer_id.presence = 1;
req->bearer_contexts_to_be_created.eps_bearer_id.u8 = bearer->ebi; req->bearer_contexts_to_be_created.eps_bearer_id.u8 = bearer->ebi;
memset(&test_s2b_u_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&test_s2b_u_teid, 0, sizeof(ogs_gtp2_f_teid_t));
test_s2b_u_teid.teid = htobe32(bearer->enb_s1u_teid); test_s2b_u_teid.teid = htobe32(bearer->enb_s1u_teid);
test_s2b_u_teid.interface_type = OGS_GTP_F_TEID_S2B_U_EPDG_GTP_U; test_s2b_u_teid.interface_type = OGS_GTP2_F_TEID_S2B_U_EPDG_GTP_U;
ogs_assert(sess->gnode->sock); ogs_assert(sess->gnode->sock);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
&sess->gnode->sock->local_addr, NULL, &test_s2b_u_teid, &len); &sess->gnode->sock->local_addr, NULL, &test_s2b_u_teid, &len);
req->bearer_contexts_to_be_created.s2b_u_epdg_f_teid_5.presence = 1; req->bearer_contexts_to_be_created.s2b_u_epdg_f_teid_5.presence = 1;
@ -150,9 +150,9 @@ ogs_pkbuf_t *test_s2b_build_create_session_request(
bearer_qos.pre_emption_capability = 0; bearer_qos.pre_emption_capability = 0;
bearer_qos.pre_emption_vulnerability = 0; bearer_qos.pre_emption_vulnerability = 0;
req->bearer_contexts_to_be_created.bearer_level_qos.presence = 1; req->bearer_contexts_to_be_created.bearer_level_qos.presence = 1;
ogs_gtp_build_bearer_qos( ogs_gtp2_build_bearer_qos(
&req->bearer_contexts_to_be_created.bearer_level_qos, &req->bearer_contexts_to_be_created.bearer_level_qos,
&bearer_qos, bearer_qos_buf, GTP_BEARER_QOS_LEN); &bearer_qos, bearer_qos_buf, GTP2_BEARER_QOS_LEN);
req->recovery.presence = 1; req->recovery.presence = 1;
req->recovery.u8 = 66; req->recovery.u8 = 66;
@ -163,7 +163,7 @@ ogs_pkbuf_t *test_s2b_build_create_session_request(
req->additional_protocol_configuration_options.len = 4; req->additional_protocol_configuration_options.len = 4;
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *test_s2b_build_delete_session_request( ogs_pkbuf_t *test_s2b_build_delete_session_request(
@ -172,21 +172,21 @@ ogs_pkbuf_t *test_s2b_build_delete_session_request(
int rv; int rv;
test_bearer_t *bearer = NULL; test_bearer_t *bearer = NULL;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_delete_session_request_t *req = &gtp_message.delete_session_request; ogs_gtp2_delete_session_request_t *req = &gtp_message.delete_session_request;
ogs_assert(sess); ogs_assert(sess);
bearer = ogs_list_first(&sess->bearer_list); bearer = ogs_list_first(&sess->bearer_list);
ogs_assert(bearer); ogs_assert(bearer);
ogs_debug("Delete Session Request"); ogs_debug("Delete Session Request");
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
req->linked_eps_bearer_id.presence = 1; req->linked_eps_bearer_id.presence = 1;
req->linked_eps_bearer_id.u8 = bearer->ebi; req->linked_eps_bearer_id.u8 = bearer->ebi;
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *test_s2b_build_create_bearer_response( ogs_pkbuf_t *test_s2b_build_create_bearer_response(
@ -194,13 +194,13 @@ ogs_pkbuf_t *test_s2b_build_create_bearer_response(
{ {
int rv; int rv;
ogs_session_t *session = NULL; ogs_session_t *session = NULL;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_create_bearer_response_t *rsp = NULL; ogs_gtp2_create_bearer_response_t *rsp = NULL;
test_sess_t *sess = NULL; test_sess_t *sess = NULL;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_gtp_f_teid_t epdg_s2b_u_teid, smf_s2b_u_teid; ogs_gtp2_f_teid_t epdg_s2b_u_teid, smf_s2b_u_teid;
int len; int len;
ogs_assert(bearer); ogs_assert(bearer);
@ -209,10 +209,10 @@ ogs_pkbuf_t *test_s2b_build_create_bearer_response(
ogs_debug("Create Bearer Response"); ogs_debug("Create Bearer Response");
rsp = &gtp_message.create_bearer_response; rsp = &gtp_message.create_bearer_response;
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
rsp->cause.presence = 1; rsp->cause.presence = 1;
rsp->cause.data = &cause; rsp->cause.data = &cause;
@ -224,11 +224,11 @@ ogs_pkbuf_t *test_s2b_build_create_bearer_response(
rsp->bearer_contexts.eps_bearer_id.u8 = bearer->ebi; rsp->bearer_contexts.eps_bearer_id.u8 = bearer->ebi;
/* Data Plane(DL) : ePDG-S2B-U */ /* Data Plane(DL) : ePDG-S2B-U */
memset(&epdg_s2b_u_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&epdg_s2b_u_teid, 0, sizeof(ogs_gtp2_f_teid_t));
epdg_s2b_u_teid.interface_type = OGS_GTP_F_TEID_S2B_U_EPDG_GTP_U; epdg_s2b_u_teid.interface_type = OGS_GTP2_F_TEID_S2B_U_EPDG_GTP_U;
epdg_s2b_u_teid.teid = htobe32(bearer->enb_s1u_teid); epdg_s2b_u_teid.teid = htobe32(bearer->enb_s1u_teid);
ogs_assert(sess->gnode->sock); ogs_assert(sess->gnode->sock);
rv = ogs_gtp_sockaddr_to_f_teid( rv = ogs_gtp2_sockaddr_to_f_teid(
&sess->gnode->sock->local_addr, NULL, &epdg_s2b_u_teid, &len); &sess->gnode->sock->local_addr, NULL, &epdg_s2b_u_teid, &len);
ogs_expect_or_return_val(rv == OGS_OK, NULL); ogs_expect_or_return_val(rv == OGS_OK, NULL);
rsp->bearer_contexts.s2b_u_epdg_f_teid_8.presence = 1; rsp->bearer_contexts.s2b_u_epdg_f_teid_8.presence = 1;
@ -236,14 +236,14 @@ ogs_pkbuf_t *test_s2b_build_create_bearer_response(
rsp->bearer_contexts.s2b_u_epdg_f_teid_8.len = len; rsp->bearer_contexts.s2b_u_epdg_f_teid_8.len = len;
/* Data Plane(UL) : SMF-S2B-U */ /* Data Plane(UL) : SMF-S2B-U */
memset(&smf_s2b_u_teid, 0, sizeof(ogs_gtp_f_teid_t)); memset(&smf_s2b_u_teid, 0, sizeof(ogs_gtp2_f_teid_t));
smf_s2b_u_teid.interface_type = OGS_GTP_F_TEID_S2B_U_PGW_GTP_U; smf_s2b_u_teid.interface_type = OGS_GTP2_F_TEID_S2B_U_PGW_GTP_U;
smf_s2b_u_teid.teid = htobe32(bearer->sgw_s1u_teid); smf_s2b_u_teid.teid = htobe32(bearer->sgw_s1u_teid);
rv = ogs_gtp_ip_to_f_teid(&bearer->sgw_s1u_ip, &smf_s2b_u_teid, &len); rv = ogs_gtp2_ip_to_f_teid(&bearer->sgw_s1u_ip, &smf_s2b_u_teid, &len);
ogs_expect_or_return_val(rv == OGS_OK, NULL); ogs_expect_or_return_val(rv == OGS_OK, NULL);
rsp->bearer_contexts.s2b_u_pgw_f_teid.presence = 1; rsp->bearer_contexts.s2b_u_pgw_f_teid.presence = 1;
rsp->bearer_contexts.s2b_u_pgw_f_teid.data = &smf_s2b_u_teid; rsp->bearer_contexts.s2b_u_pgw_f_teid.data = &smf_s2b_u_teid;
rsp->bearer_contexts.s2b_u_pgw_f_teid.len = OGS_GTP_F_TEID_IPV4_LEN; rsp->bearer_contexts.s2b_u_pgw_f_teid.len = OGS_GTP2_F_TEID_IPV4_LEN;
/* Bearer Context : Cause */ /* Bearer Context : Cause */
rsp->bearer_contexts.cause.presence = 1; rsp->bearer_contexts.cause.presence = 1;
@ -251,7 +251,7 @@ ogs_pkbuf_t *test_s2b_build_create_bearer_response(
rsp->bearer_contexts.cause.data = &cause; rsp->bearer_contexts.cause.data = &cause;
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }
ogs_pkbuf_t *test_s2b_build_delete_bearer_response( ogs_pkbuf_t *test_s2b_build_delete_bearer_response(
@ -259,19 +259,19 @@ ogs_pkbuf_t *test_s2b_build_delete_bearer_response(
{ {
int rv; int rv;
ogs_session_t *session = NULL; ogs_session_t *session = NULL;
ogs_gtp_message_t gtp_message; ogs_gtp2_message_t gtp_message;
ogs_gtp_delete_bearer_response_t *rsp = NULL; ogs_gtp2_delete_bearer_response_t *rsp = NULL;
ogs_gtp_cause_t cause; ogs_gtp2_cause_t cause;
ogs_assert(bearer); ogs_assert(bearer);
ogs_debug("Delete Bearer Response"); ogs_debug("Delete Bearer Response");
rsp = &gtp_message.delete_bearer_response; rsp = &gtp_message.delete_bearer_response;
memset(&gtp_message, 0, sizeof(ogs_gtp_message_t)); memset(&gtp_message, 0, sizeof(ogs_gtp2_message_t));
memset(&cause, 0, sizeof(cause)); memset(&cause, 0, sizeof(cause));
cause.value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause.value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
rsp->cause.presence = 1; rsp->cause.presence = 1;
rsp->cause.data = &cause; rsp->cause.data = &cause;
@ -281,5 +281,5 @@ ogs_pkbuf_t *test_s2b_build_delete_bearer_response(
rsp->linked_eps_bearer_id.u8 = bearer->ebi; rsp->linked_eps_bearer_id.u8 = bearer->ebi;
gtp_message.h.type = type; gtp_message.h.type = type;
return ogs_gtp_build_msg(&gtp_message); return ogs_gtp2_build_msg(&gtp_message);
} }

View File

@ -22,14 +22,14 @@
void test_s2b_handle_create_session_response( void test_s2b_handle_create_session_response(
ogs_gtp_xact_t *xact, test_sess_t *sess, ogs_gtp_xact_t *xact, test_sess_t *sess,
ogs_gtp_create_session_response_t *rsp) ogs_gtp2_create_session_response_t *rsp)
{ {
int rv; int rv;
uint8_t cause_value; uint8_t cause_value;
test_bearer_t *bearer = NULL; test_bearer_t *bearer = NULL;
ogs_gtp_f_teid_t *smf_s2b_c_teid = NULL; ogs_gtp2_f_teid_t *smf_s2b_c_teid = NULL;
ogs_gtp_f_teid_t *smf_s2b_u_teid = NULL; ogs_gtp2_f_teid_t *smf_s2b_u_teid = NULL;
ogs_paa_t paa; ogs_paa_t paa;
ogs_assert(xact); ogs_assert(xact);
@ -40,11 +40,11 @@ void test_s2b_handle_create_session_response(
ogs_expect(rv == OGS_OK); ogs_expect(rv == OGS_OK);
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
if (cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED) { if (cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
} else { } else {
ogs_error("GTP Failed [CAUSE:%d]", cause_value); ogs_error("GTP Failed [CAUSE:%d]", cause_value);
return; return;
@ -92,7 +92,7 @@ void test_s2b_handle_create_session_response(
bearer->sgw_s1u_teid = be32toh(smf_s2b_u_teid->teid); bearer->sgw_s1u_teid = be32toh(smf_s2b_u_teid->teid);
ogs_assert(OGS_OK == ogs_assert(OGS_OK ==
ogs_gtp_f_teid_to_ip(smf_s2b_u_teid, &bearer->sgw_s1u_ip)); ogs_gtp2_f_teid_to_ip(smf_s2b_u_teid, &bearer->sgw_s1u_ip));
memcpy(&paa, memcpy(&paa,
rsp->pdn_address_allocation.data, rsp->pdn_address_allocation.len); rsp->pdn_address_allocation.data, rsp->pdn_address_allocation.len);
@ -122,7 +122,7 @@ void test_s2b_handle_create_session_response(
void test_s2b_handle_delete_session_response( void test_s2b_handle_delete_session_response(
ogs_gtp_xact_t *xact, test_sess_t *sess, ogs_gtp_xact_t *xact, test_sess_t *sess,
ogs_gtp_delete_session_response_t *rsp) ogs_gtp2_delete_session_response_t *rsp)
{ {
int rv; int rv;
uint8_t cause_value; uint8_t cause_value;
@ -131,17 +131,17 @@ void test_s2b_handle_delete_session_response(
ogs_assert(sess); ogs_assert(sess);
ogs_assert(rsp); ogs_assert(rsp);
cause_value = OGS_GTP_CAUSE_REQUEST_ACCEPTED; cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
rv = ogs_gtp_xact_commit(xact); rv = ogs_gtp_xact_commit(xact);
ogs_expect(rv == OGS_OK); ogs_expect(rv == OGS_OK);
if (rsp->cause.presence) { if (rsp->cause.presence) {
ogs_gtp_cause_t *cause = rsp->cause.data; ogs_gtp2_cause_t *cause = rsp->cause.data;
ogs_assert(cause); ogs_assert(cause);
cause_value = cause->value; cause_value = cause->value;
ogs_assert(cause_value == OGS_GTP_CAUSE_REQUEST_ACCEPTED); ogs_assert(cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED);
} }
test_sess_remove(sess); test_sess_remove(sess);
@ -149,12 +149,12 @@ void test_s2b_handle_delete_session_response(
void test_s2b_handle_create_bearer_request( void test_s2b_handle_create_bearer_request(
ogs_gtp_xact_t *xact, test_sess_t *sess, ogs_gtp_xact_t *xact, test_sess_t *sess,
ogs_gtp_create_bearer_request_t *req) ogs_gtp2_create_bearer_request_t *req)
{ {
int rv; int rv;
test_bearer_t *linked_bearer = NULL; test_bearer_t *linked_bearer = NULL;
test_bearer_t *bearer = NULL; test_bearer_t *bearer = NULL;
ogs_gtp_f_teid_t *smf_s2b_u_teid = NULL; ogs_gtp2_f_teid_t *smf_s2b_u_teid = NULL;
ogs_assert(xact); ogs_assert(xact);
ogs_assert(sess); ogs_assert(sess);
@ -198,7 +198,7 @@ void test_s2b_handle_create_bearer_request(
smf_s2b_u_teid = req->bearer_contexts.s4_u_sgsn_f_teid.data; smf_s2b_u_teid = req->bearer_contexts.s4_u_sgsn_f_teid.data;
ogs_assert(smf_s2b_u_teid); ogs_assert(smf_s2b_u_teid);
bearer->sgw_s1u_teid = be32toh(smf_s2b_u_teid->teid); bearer->sgw_s1u_teid = be32toh(smf_s2b_u_teid->teid);
rv = ogs_gtp_f_teid_to_ip(smf_s2b_u_teid, &bearer->sgw_s1u_ip); rv = ogs_gtp2_f_teid_to_ip(smf_s2b_u_teid, &bearer->sgw_s1u_ip);
ogs_assert(rv == OGS_OK); ogs_assert(rv == OGS_OK);
ogs_assert(OGS_OK == test_s2b_send_create_bearer_response(bearer, xact)); ogs_assert(OGS_OK == test_s2b_send_create_bearer_response(bearer, xact));
@ -206,10 +206,10 @@ void test_s2b_handle_create_bearer_request(
void test_s2b_handle_delete_bearer_request( void test_s2b_handle_delete_bearer_request(
ogs_gtp_xact_t *xact, test_sess_t *sess, ogs_gtp_xact_t *xact, test_sess_t *sess,
ogs_gtp_delete_bearer_request_t *req) ogs_gtp2_delete_bearer_request_t *req)
{ {
test_bearer_t *bearer = NULL; test_bearer_t *bearer = NULL;
ogs_gtp_cause_t *cause = NULL; ogs_gtp2_cause_t *cause = NULL;
ogs_assert(xact); ogs_assert(xact);
ogs_assert(sess); ogs_assert(sess);
@ -220,7 +220,7 @@ void test_s2b_handle_delete_bearer_request(
ogs_assert(cause); ogs_assert(cause);
ogs_assert(cause->value == ogs_assert(cause->value ==
OGS_GTP_CAUSE_ACCESS_CHANGED_FROM_NON_3GPP_TO_3GPP); OGS_GTP2_CAUSE_ACCESS_CHANGED_FROM_NON_3GPP_TO_3GPP);
ogs_assert(req->linked_eps_bearer_id.presence); ogs_assert(req->linked_eps_bearer_id.presence);
bearer = test_bearer_find_by_sess_ebi(sess, req->linked_eps_bearer_id.u8); bearer = test_bearer_find_by_sess_ebi(sess, req->linked_eps_bearer_id.u8);

View File

@ -28,17 +28,17 @@ extern "C" {
void test_s2b_handle_create_session_response( void test_s2b_handle_create_session_response(
ogs_gtp_xact_t *xact, test_sess_t *sess, ogs_gtp_xact_t *xact, test_sess_t *sess,
ogs_gtp_create_session_response_t *rsp); ogs_gtp2_create_session_response_t *rsp);
void test_s2b_handle_delete_session_response( void test_s2b_handle_delete_session_response(
ogs_gtp_xact_t *xact, test_sess_t *sess, ogs_gtp_xact_t *xact, test_sess_t *sess,
ogs_gtp_delete_session_response_t *rsp); ogs_gtp2_delete_session_response_t *rsp);
void test_s2b_handle_create_bearer_request( void test_s2b_handle_create_bearer_request(
ogs_gtp_xact_t *xact, test_sess_t *sess, ogs_gtp_xact_t *xact, test_sess_t *sess,
ogs_gtp_create_bearer_request_t *req); ogs_gtp2_create_bearer_request_t *req);
void test_s2b_handle_delete_bearer_request( void test_s2b_handle_delete_bearer_request(
ogs_gtp_xact_t *xact, test_sess_t *sess, ogs_gtp_xact_t *xact, test_sess_t *sess,
ogs_gtp_delete_bearer_request_t *req); ogs_gtp2_delete_bearer_request_t *req);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -24,7 +24,7 @@ static void gtp_message_test1(abts_case *tc, void *data)
{ {
int rv; int rv;
/* Create Session Request */ /* Create Session Request */
const char *_payload = const char *_payload =
"0100080055153011 340010f44c000600 9471527600414b00 0800536120009178" "0100080055153011 340010f44c000600 9471527600414b00 0800536120009178"
"840056000d001855 f501102255f50100 019d015300030055 f501520001000657" "840056000d001855 f501102255f50100 019d015300030055 f501520001000657"
"0009008a80000084 0a32360a57000901 87000000000a3236 254700220005766f" "0009008a80000084 0a32360a57000901 87000000000a3236 254700220005766f"
@ -36,25 +36,25 @@ static void gtp_message_test1(abts_case *tc, void *data)
char *_value = NULL; char *_value = NULL;
char hexbuf[OGS_MAX_SDU_LEN]; char hexbuf[OGS_MAX_SDU_LEN];
ogs_gtp_create_session_request_t req; ogs_gtp2_create_session_request_t req;
ogs_gtp_uli_t uli; ogs_gtp2_uli_t uli;
char ulibuf[OGS_GTP_MAX_ULI_LEN]; char ulibuf[OGS_GTP2_MAX_ULI_LEN];
ogs_plmn_id_t serving_network; ogs_plmn_id_t serving_network;
char apnbuf[34]; char apnbuf[34];
ogs_gtp_f_teid_t s11, s5; ogs_gtp2_f_teid_t s11, s5;
ogs_paa_t paa; ogs_paa_t paa;
ogs_gtp_ambr_t ambr; ogs_gtp2_ambr_t ambr;
ogs_pco_t pco; ogs_pco_t pco;
unsigned char pcobuf[OGS_MAX_PCO_LEN]; unsigned char pcobuf[OGS_MAX_PCO_LEN];
ogs_gtp_bearer_qos_t bearer_qos; ogs_gtp2_bearer_qos_t bearer_qos;
char bearer_qos_buf[GTP_BEARER_QOS_LEN]; char bearer_qos_buf[GTP2_BEARER_QOS_LEN];
ogs_gtp_ue_timezone_t ue_timezone; ogs_gtp2_ue_timezone_t ue_timezone;
int size = 0; int size = 0;
ogs_pkbuf_t *pkbuf = NULL; ogs_pkbuf_t *pkbuf = NULL;
ogs_sockaddr_t sa; ogs_sockaddr_t sa;
memset(&req, 0, sizeof(ogs_gtp_create_session_request_t)); memset(&req, 0, sizeof(ogs_gtp2_create_session_request_t));
req.imsi.presence = 1; req.imsi.presence = 1;
req.imsi.data = (uint8_t *)"\x55\x15\x30\x11\x34\x00\x10\xf4"; req.imsi.data = (uint8_t *)"\x55\x15\x30\x11\x34\x00\x10\xf4";
@ -68,7 +68,7 @@ static void gtp_message_test1(abts_case *tc, void *data)
req.me_identity.data = (uint8_t *)"\x53\x61\x20\x00\x91\x78\x84\x00"; req.me_identity.data = (uint8_t *)"\x53\x61\x20\x00\x91\x78\x84\x00";
req.me_identity.len = 8; req.me_identity.len = 8;
memset(&uli, 0, sizeof(ogs_gtp_uli_t)); memset(&uli, 0, sizeof(ogs_gtp2_uli_t));
uli.flags.e_cgi = 1; uli.flags.e_cgi = 1;
uli.flags.tai = 1; uli.flags.tai = 1;
ogs_plmn_id_build(&uli.tai.nas_plmn_id, 555, 10, 2); ogs_plmn_id_build(&uli.tai.nas_plmn_id, 555, 10, 2);
@ -76,8 +76,8 @@ static void gtp_message_test1(abts_case *tc, void *data)
ogs_plmn_id_build(&uli.e_cgi.nas_plmn_id, 555, 10, 2); ogs_plmn_id_build(&uli.e_cgi.nas_plmn_id, 555, 10, 2);
uli.e_cgi.cell_id = 105729; uli.e_cgi.cell_id = 105729;
req.user_location_information.presence = 1; req.user_location_information.presence = 1;
size = ogs_gtp_build_uli(&req.user_location_information, &uli, size = ogs_gtp2_build_uli(&req.user_location_information, &uli,
ulibuf, OGS_GTP_MAX_ULI_LEN); ulibuf, OGS_GTP2_MAX_ULI_LEN);
ABTS_INT_EQUAL(tc, 13, req.user_location_information.len); ABTS_INT_EQUAL(tc, 13, req.user_location_information.len);
req.serving_network.presence = 1; req.serving_network.presence = 1;
@ -85,27 +85,27 @@ static void gtp_message_test1(abts_case *tc, void *data)
req.serving_network.len = sizeof(serving_network); req.serving_network.len = sizeof(serving_network);
req.rat_type.presence = 1; req.rat_type.presence = 1;
req.rat_type.u8 = OGS_GTP_RAT_TYPE_EUTRAN; req.rat_type.u8 = OGS_GTP2_RAT_TYPE_EUTRAN;
memset(&s11, 0, sizeof(ogs_gtp_f_teid_t)); memset(&s11, 0, sizeof(ogs_gtp2_f_teid_t));
s11.ipv4 = 1; s11.ipv4 = 1;
s11.interface_type = OGS_GTP_F_TEID_S11_MME_GTP_C; s11.interface_type = OGS_GTP2_F_TEID_S11_MME_GTP_C;
s11.teid = htonl(0x80000084); s11.teid = htonl(0x80000084);
ogs_inet_pton(AF_INET, "10.50.54.10", &sa); ogs_inet_pton(AF_INET, "10.50.54.10", &sa);
s11.addr = sa.sin.sin_addr.s_addr; s11.addr = sa.sin.sin_addr.s_addr;
req.sender_f_teid_for_control_plane.presence = 1; req.sender_f_teid_for_control_plane.presence = 1;
req.sender_f_teid_for_control_plane.data = &s11; req.sender_f_teid_for_control_plane.data = &s11;
req.sender_f_teid_for_control_plane.len = OGS_GTP_F_TEID_IPV4_LEN; req.sender_f_teid_for_control_plane.len = OGS_GTP2_F_TEID_IPV4_LEN;
memset(&s5, 0, sizeof(ogs_gtp_f_teid_t)); memset(&s5, 0, sizeof(ogs_gtp2_f_teid_t));
s5.ipv4 = 1; s5.ipv4 = 1;
s5.interface_type = OGS_GTP_F_TEID_S5_S8_PGW_GTP_C; s5.interface_type = OGS_GTP2_F_TEID_S5_S8_PGW_GTP_C;
ogs_inet_pton(AF_INET, "10.50.54.37", &sa); ogs_inet_pton(AF_INET, "10.50.54.37", &sa);
s5.addr = sa.sin.sin_addr.s_addr; s5.addr = sa.sin.sin_addr.s_addr;
req.pgw_s5_s8_address_for_control_plane_or_pmip.presence = 1; req.pgw_s5_s8_address_for_control_plane_or_pmip.presence = 1;
req.pgw_s5_s8_address_for_control_plane_or_pmip.data = &s5; req.pgw_s5_s8_address_for_control_plane_or_pmip.data = &s5;
req.pgw_s5_s8_address_for_control_plane_or_pmip.len = req.pgw_s5_s8_address_for_control_plane_or_pmip.len =
OGS_GTP_F_TEID_IPV4_LEN; OGS_GTP2_F_TEID_IPV4_LEN;
_value = (char*)"05766f6c7465036e 6732046d6e657406 6d6e63303130066d 6363353535046770 7273"; _value = (char*)"05766f6c7465036e 6732046d6e657406 6d6e63303130066d 6363353535046770 7273";
req.access_point_name.presence = 1; req.access_point_name.presence = 1;
@ -113,8 +113,8 @@ static void gtp_message_test1(abts_case *tc, void *data)
req.access_point_name.len = sizeof(apnbuf); req.access_point_name.len = sizeof(apnbuf);
req.selection_mode.presence = 1; req.selection_mode.presence = 1;
req.selection_mode.u8 = req.selection_mode.u8 =
OGS_GTP_SELECTION_MODE_MS_OR_NETWORK_PROVIDED_APN | 0xfc; OGS_GTP2_SELECTION_MODE_MS_OR_NETWORK_PROVIDED_APN | 0xfc;
req.pdn_type.presence = 1; req.pdn_type.presence = 1;
req.pdn_type.u8 = OGS_PDU_SESSION_TYPE_IPV4; req.pdn_type.u8 = OGS_PDU_SESSION_TYPE_IPV4;
@ -126,9 +126,9 @@ static void gtp_message_test1(abts_case *tc, void *data)
req.pdn_address_allocation.len = OGS_PAA_IPV4_LEN; req.pdn_address_allocation.len = OGS_PAA_IPV4_LEN;
req.maximum_apn_restriction.presence = 1; req.maximum_apn_restriction.presence = 1;
req.maximum_apn_restriction.u8 = OGS_GTP_APN_NO_RESTRICTION; req.maximum_apn_restriction.u8 = OGS_GTP2_APN_NO_RESTRICTION;
memset(&ambr, 0, sizeof(ogs_gtp_ambr_t)); memset(&ambr, 0, sizeof(ogs_gtp2_ambr_t));
ambr.uplink = htonl(1000); ambr.uplink = htonl(1000);
ambr.downlink = htonl(2000); ambr.downlink = htonl(2000);
req.aggregate_maximum_bit_rate.presence = 1; req.aggregate_maximum_bit_rate.presence = 1;
@ -137,7 +137,7 @@ static void gtp_message_test1(abts_case *tc, void *data)
memset(&pco, 0, sizeof(ogs_pco_t)); memset(&pco, 0, sizeof(ogs_pco_t));
pco.ext = 1; pco.ext = 1;
pco.configuration_protocol = pco.configuration_protocol =
OGS_PCO_PPP_FOR_USE_WITH_IP_PDP_TYPE_OR_IP_PDN_TYPE; OGS_PCO_PPP_FOR_USE_WITH_IP_PDP_TYPE_OR_IP_PDN_TYPE;
pco.num_of_id = 3; pco.num_of_id = 3;
pco.ids[0].id = OGS_PCO_ID_INTERNET_PROTOCOL_CONTROL_PROTOCOL; pco.ids[0].id = OGS_PCO_ID_INTERNET_PROTOCOL_CONTROL_PROTOCOL;
@ -150,7 +150,7 @@ static void gtp_message_test1(abts_case *tc, void *data)
req.protocol_configuration_options.presence = 1; req.protocol_configuration_options.presence = 1;
req.protocol_configuration_options.data = &pcobuf; req.protocol_configuration_options.data = &pcobuf;
req.protocol_configuration_options.len = req.protocol_configuration_options.len =
ogs_pco_build(pcobuf, OGS_MAX_PCO_LEN, &pco); ogs_pco_build(pcobuf, OGS_MAX_PCO_LEN, &pco);
req.bearer_contexts_to_be_created.presence = 1; req.bearer_contexts_to_be_created.presence = 1;
@ -163,14 +163,14 @@ static void gtp_message_test1(abts_case *tc, void *data)
bearer_qos.pre_emption_capability = 1; bearer_qos.pre_emption_capability = 1;
bearer_qos.qci = 5; bearer_qos.qci = 5;
req.bearer_contexts_to_be_created.bearer_level_qos.presence = 1; req.bearer_contexts_to_be_created.bearer_level_qos.presence = 1;
size = ogs_gtp_build_bearer_qos( size = ogs_gtp2_build_bearer_qos(
&req.bearer_contexts_to_be_created.bearer_level_qos, &req.bearer_contexts_to_be_created.bearer_level_qos,
&bearer_qos, bearer_qos_buf, GTP_BEARER_QOS_LEN); &bearer_qos, bearer_qos_buf, GTP2_BEARER_QOS_LEN);
memset(&ue_timezone, 0, sizeof(ue_timezone)); memset(&ue_timezone, 0, sizeof(ue_timezone));
ue_timezone.timezone = 0x40; ue_timezone.timezone = 0x40;
ue_timezone.daylight_saving_time = ue_timezone.daylight_saving_time =
OGS_GTP_UE_TIME_ZONE_NO_ADJUSTMENT_FOR_DAYLIGHT_SAVING_TIME; OGS_GTP2_UE_TIME_ZONE_NO_ADJUSTMENT_FOR_DAYLIGHT_SAVING_TIME;
req.ue_time_zone.presence = 1; req.ue_time_zone.presence = 1;
req.ue_time_zone.data = &ue_timezone; req.ue_time_zone.data = &ue_timezone;
req.ue_time_zone.len = sizeof(ue_timezone); req.ue_time_zone.len = sizeof(ue_timezone);
@ -179,15 +179,15 @@ static void gtp_message_test1(abts_case *tc, void *data)
req.charging_characteristics.data = (uint8_t *)"\x54\x00"; req.charging_characteristics.data = (uint8_t *)"\x54\x00";
req.charging_characteristics.len = 2; req.charging_characteristics.len = 2;
pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_create_session_request, pkbuf = ogs_tlv_build_msg(&ogs_gtp2_tlv_desc_create_session_request,
&req, OGS_TLV_MODE_T1_L2_I1); &req, OGS_TLV_MODE_T1_L2_I1);
ABTS_PTR_NOTNULL(tc, pkbuf); ABTS_PTR_NOTNULL(tc, pkbuf);
ABTS_TRUE(tc, memcmp(pkbuf->data, ABTS_TRUE(tc, memcmp(pkbuf->data,
OGS_HEX(_payload, strlen(_payload), hexbuf), pkbuf->len) == 0); OGS_HEX(_payload, strlen(_payload), hexbuf), pkbuf->len) == 0);
memset(&req, 0, sizeof(req)); memset(&req, 0, sizeof(req));
rv = ogs_tlv_parse_msg(&req, &ogs_gtp_tlv_desc_create_session_request, rv = ogs_tlv_parse_msg(&req, &ogs_gtp2_tlv_desc_create_session_request,
pkbuf, OGS_TLV_MODE_T1_L2_I1); pkbuf, OGS_TLV_MODE_T1_L2_I1);
ABTS_INT_EQUAL(tc, OGS_OK, rv); ABTS_INT_EQUAL(tc, OGS_OK, rv);
@ -196,13 +196,13 @@ static void gtp_message_test1(abts_case *tc, void *data)
ABTS_INT_EQUAL(tc, 1, req.imsi.presence); ABTS_INT_EQUAL(tc, 1, req.imsi.presence);
ABTS_INT_EQUAL(tc, 8, req.imsi.len); ABTS_INT_EQUAL(tc, 8, req.imsi.len);
_value = (char*)"55153011 340010f4"; _value = (char*)"55153011 340010f4";
ABTS_TRUE(tc, memcmp(OGS_HEX(_value, strlen(_value), hexbuf), ABTS_TRUE(tc, memcmp(OGS_HEX(_value, strlen(_value), hexbuf),
req.imsi.data, req.imsi.len) == 0); req.imsi.data, req.imsi.len) == 0);
ABTS_INT_EQUAL(tc, 1, req.msisdn.presence); ABTS_INT_EQUAL(tc, 1, req.msisdn.presence);
ABTS_INT_EQUAL(tc, 6, req.msisdn.len); ABTS_INT_EQUAL(tc, 6, req.msisdn.len);
_value = (char*)"94715276 0041"; _value = (char*)"94715276 0041";
ABTS_TRUE(tc, memcmp(OGS_HEX(_value, strlen(_value), hexbuf), ABTS_TRUE(tc, memcmp(OGS_HEX(_value, strlen(_value), hexbuf),
req.msisdn.data, req.msisdn.len) == 0); req.msisdn.data, req.msisdn.len) == 0);
ABTS_INT_EQUAL(tc, 1, req.me_identity.presence); ABTS_INT_EQUAL(tc, 1, req.me_identity.presence);
@ -212,7 +212,7 @@ static void gtp_message_test1(abts_case *tc, void *data)
req.me_identity.data, req.me_identity.len) == 0); req.me_identity.data, req.me_identity.len) == 0);
ABTS_INT_EQUAL(tc, 1, req.user_location_information.presence); ABTS_INT_EQUAL(tc, 1, req.user_location_information.presence);
size = ogs_gtp_parse_uli(&uli, &req.user_location_information); size = ogs_gtp2_parse_uli(&uli, &req.user_location_information);
ABTS_INT_EQUAL(tc, 13, size); ABTS_INT_EQUAL(tc, 13, size);
ABTS_INT_EQUAL(tc, 0, uli.flags.lai); ABTS_INT_EQUAL(tc, 0, uli.flags.lai);
ABTS_INT_EQUAL(tc, 1, uli.flags.e_cgi); ABTS_INT_EQUAL(tc, 1, uli.flags.e_cgi);
@ -244,25 +244,25 @@ static void gtp_message_test1(abts_case *tc, void *data)
ABTS_INT_EQUAL(tc, 1, pco.ext); ABTS_INT_EQUAL(tc, 1, pco.ext);
ABTS_INT_EQUAL(tc, 0, pco.configuration_protocol); ABTS_INT_EQUAL(tc, 0, pco.configuration_protocol);
ABTS_INT_EQUAL(tc, 3, pco.num_of_id); ABTS_INT_EQUAL(tc, 3, pco.num_of_id);
ABTS_INT_EQUAL(tc, ABTS_INT_EQUAL(tc,
OGS_PCO_ID_INTERNET_PROTOCOL_CONTROL_PROTOCOL, OGS_PCO_ID_INTERNET_PROTOCOL_CONTROL_PROTOCOL,
pco.ids[0].id); pco.ids[0].id);
ABTS_INT_EQUAL(tc, 16, pco.ids[0].len); ABTS_INT_EQUAL(tc, 16, pco.ids[0].len);
ABTS_TRUE(tc, memcmp( ABTS_TRUE(tc, memcmp(
"\x01\x00\x00\x10\x81\x06\x00\x00\x00\x00\x83\x06\x00\x00\x00\x00", "\x01\x00\x00\x10\x81\x06\x00\x00\x00\x00\x83\x06\x00\x00\x00\x00",
pco.ids[0].data, pco.ids[0].len) == 0); pco.ids[0].data, pco.ids[0].len) == 0);
ABTS_INT_EQUAL(tc, ABTS_INT_EQUAL(tc,
OGS_PCO_ID_DNS_SERVER_IPV4_ADDRESS_REQUEST, OGS_PCO_ID_DNS_SERVER_IPV4_ADDRESS_REQUEST,
pco.ids[1].id); pco.ids[1].id);
ABTS_INT_EQUAL(tc, 0, pco.ids[1].len); ABTS_INT_EQUAL(tc, 0, pco.ids[1].len);
ABTS_INT_EQUAL(tc, ABTS_INT_EQUAL(tc,
OGS_PCO_ID_IP_ADDRESS_ALLOCATION_VIA_NAS_SIGNALLING, OGS_PCO_ID_IP_ADDRESS_ALLOCATION_VIA_NAS_SIGNALLING,
pco.ids[2].id); pco.ids[2].id);
ABTS_INT_EQUAL(tc, 0, pco.ids[2].len); ABTS_INT_EQUAL(tc, 0, pco.ids[2].len);
ABTS_INT_EQUAL(tc, 1, req.bearer_contexts_to_be_created.presence); ABTS_INT_EQUAL(tc, 1, req.bearer_contexts_to_be_created.presence);
ABTS_INT_EQUAL(tc, 1, req. ABTS_INT_EQUAL(tc, 1, req.
bearer_contexts_to_be_created.eps_bearer_id.presence); bearer_contexts_to_be_created.eps_bearer_id.presence);
ABTS_INT_EQUAL(tc, 0x05, ABTS_INT_EQUAL(tc, 0x05,
req.bearer_contexts_to_be_created.eps_bearer_id.u8); req.bearer_contexts_to_be_created.eps_bearer_id.u8);
ABTS_INT_EQUAL(tc, 0, req. ABTS_INT_EQUAL(tc, 0, req.
bearer_contexts_to_be_created.tft.presence); bearer_contexts_to_be_created.tft.presence);
@ -276,7 +276,7 @@ static void gtp_message_test1(abts_case *tc, void *data)
bearer_contexts_to_be_created.bearer_level_qos.presence); bearer_contexts_to_be_created.bearer_level_qos.presence);
ABTS_INT_EQUAL(tc, 22, ABTS_INT_EQUAL(tc, 22,
req.bearer_contexts_to_be_created.bearer_level_qos.len); req.bearer_contexts_to_be_created.bearer_level_qos.len);
size = ogs_gtp_parse_bearer_qos(&bearer_qos, size = ogs_gtp2_parse_bearer_qos(&bearer_qos,
&req.bearer_contexts_to_be_created.bearer_level_qos); &req.bearer_contexts_to_be_created.bearer_level_qos);
ABTS_INT_EQUAL(tc, 22, size); ABTS_INT_EQUAL(tc, 22, size);
ABTS_INT_EQUAL(tc, 1, bearer_qos.pre_emption_vulnerability); ABTS_INT_EQUAL(tc, 1, bearer_qos.pre_emption_vulnerability);

View File

@ -64,7 +64,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */

View File

@ -75,7 +75,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
#endif #endif
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -218,7 +218,7 @@ static void test1_func(abts_case *tc, void *data)
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
/* Send PDN Connectivity Request */ /* Send PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 5; sess->pti = 5;

View File

@ -70,7 +70,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -213,7 +213,7 @@ static void test1_func(abts_case *tc, void *data)
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
/* Send PDN Connectivity Request */ /* Send PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 5; sess->pti = 5;
@ -348,7 +348,7 @@ static void test1_func(abts_case *tc, void *data)
/* Send Bearer resource modification request */ /* Send Bearer resource modification request */
sess->pti = 7; sess->pti = 7;
esmbuf = testesm_build_bearer_resource_modification_request( esmbuf = testesm_build_bearer_resource_modification_request(
bearer, OGS_GTP_TFT_CODE_NO_TFT_OPERATION, 0, 0); bearer, OGS_GTP2_TFT_CODE_NO_TFT_OPERATION, 0, 0);
ABTS_PTR_NOTNULL(tc, esmbuf); ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf); sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf); ABTS_PTR_NOTNULL(tc, sendbuf);
@ -363,7 +363,7 @@ static void test1_func(abts_case *tc, void *data)
/* Send Bearer resource modification request */ /* Send Bearer resource modification request */
sess->pti = 8; sess->pti = 8;
esmbuf = testesm_build_bearer_resource_modification_request( esmbuf = testesm_build_bearer_resource_modification_request(
bearer, OGS_GTP_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT, 1, 0); bearer, OGS_GTP2_TFT_CODE_ADD_PACKET_FILTERS_TO_EXISTING_TFT, 1, 0);
ABTS_PTR_NOTNULL(tc, esmbuf); ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf); sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf); ABTS_PTR_NOTNULL(tc, sendbuf);
@ -396,7 +396,7 @@ static void test1_func(abts_case *tc, void *data)
/* Send Bearer resource modification request */ /* Send Bearer resource modification request */
sess->pti = 9; sess->pti = 9;
esmbuf = testesm_build_bearer_resource_modification_request( esmbuf = testesm_build_bearer_resource_modification_request(
bearer, OGS_GTP_TFT_CODE_REPLACE_PACKET_FILTERS_IN_EXISTING, 0, 0); bearer, OGS_GTP2_TFT_CODE_REPLACE_PACKET_FILTERS_IN_EXISTING, 0, 0);
ABTS_PTR_NOTNULL(tc, esmbuf); ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf); sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf); ABTS_PTR_NOTNULL(tc, sendbuf);
@ -429,7 +429,7 @@ static void test1_func(abts_case *tc, void *data)
/* Send Bearer resource modification request */ /* Send Bearer resource modification request */
sess->pti = 10; sess->pti = 10;
esmbuf = testesm_build_bearer_resource_modification_request( esmbuf = testesm_build_bearer_resource_modification_request(
bearer, OGS_GTP_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0, bearer, OGS_GTP2_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0,
ESM_CAUSE_REGULAR_DEACTIVATION); ESM_CAUSE_REGULAR_DEACTIVATION);
ABTS_PTR_NOTNULL(tc, esmbuf); ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf); sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
@ -585,7 +585,7 @@ static void test2_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -719,7 +719,7 @@ static void test2_func(abts_case *tc, void *data)
tests1ap_recv(test_ue, recvbuf); tests1ap_recv(test_ue, recvbuf);
/* Send PDN Connectivity Request */ /* Send PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 5; sess->pti = 5;
@ -936,7 +936,7 @@ static void test3_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -1079,7 +1079,7 @@ static void test3_func(abts_case *tc, void *data)
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
/* Send PDN Connectivity Request */ /* Send PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 37; sess->pti = 37;
@ -1164,7 +1164,7 @@ static void test3_func(abts_case *tc, void *data)
test_ue->s1ap_procedure_code); test_ue->s1ap_procedure_code);
/* Send PDN connectivity Request */ /* Send PDN connectivity Request */
sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 39; sess->pti = 39;
@ -1286,7 +1286,7 @@ static void test4_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -1429,7 +1429,7 @@ static void test4_func(abts_case *tc, void *data)
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
/* Send PDN Connectivity Request */ /* Send PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 7; sess->pti = 7;
@ -1474,7 +1474,7 @@ static void test4_func(abts_case *tc, void *data)
ogs_msleep(100); ogs_msleep(100);
/* Send PDN disconnectivity request */ /* Send PDN disconnectivity request */
sess = test_sess_find_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_find_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
sess->pti = 8; sess->pti = 8;
esmbuf = testesm_build_pdn_disconnect_request(sess); esmbuf = testesm_build_pdn_disconnect_request(sess);
ABTS_PTR_NOTNULL(tc, esmbuf); ABTS_PTR_NOTNULL(tc, esmbuf);
@ -1512,7 +1512,7 @@ static void test4_func(abts_case *tc, void *data)
test_sess_remove(sess); test_sess_remove(sess);
/* Send PDN Connectivity Request */ /* Send PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 9; sess->pti = 9;
@ -1557,7 +1557,7 @@ static void test4_func(abts_case *tc, void *data)
ogs_msleep(100); ogs_msleep(100);
/* Send AA-Request */ /* Send AA-Request */
sess = test_sess_find_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_find_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
test_rx_send_aar_audio(&rx_sid, sess, test_rx_send_aar_audio(&rx_sid, sess,
OGS_DIAM_RX_SUBSCRIPTION_ID_TYPE_END_USER_IMSI, 1, 1); OGS_DIAM_RX_SUBSCRIPTION_ID_TYPE_END_USER_IMSI, 1, 1);
@ -1640,15 +1640,15 @@ static void test4_func(abts_case *tc, void *data)
ABTS_INT_EQUAL(tc, OGS_OK, rv); ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Test Session Remove */ /* Test Session Remove */
sess = test_sess_find_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_find_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
test_sess_remove(sess); test_sess_remove(sess);
sess = test_sess_find_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_find_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
test_sess_remove(sess); test_sess_remove(sess);
/* Send Attach Request */ /* Send Attach Request */
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
memset(&sess->pdn_connectivity_param, memset(&sess->pdn_connectivity_param,
@ -1815,7 +1815,7 @@ static void test5_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -1958,7 +1958,7 @@ static void test5_func(abts_case *tc, void *data)
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
/* Send PDN Connectivity Request */ /* Send PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 7; sess->pti = 7;
@ -2321,7 +2321,7 @@ static void test6_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -2464,7 +2464,7 @@ static void test6_func(abts_case *tc, void *data)
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
/* Send PDN Connectivity Request */ /* Send PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 5; sess->pti = 5;
@ -2746,7 +2746,7 @@ static void test7_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -2889,7 +2889,7 @@ static void test7_func(abts_case *tc, void *data)
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
/* Send PDN Connectivity Request */ /* Send PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 5; sess->pti = 5;

View File

@ -64,7 +64,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -198,7 +198,7 @@ static void test1_func(abts_case *tc, void *data)
tests1ap_recv(test_ue, recvbuf); tests1ap_recv(test_ue, recvbuf);
/* Send PDN Connectivity Request */ /* Send PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 5; sess->pti = 5;
@ -314,7 +314,7 @@ static void test1_func(abts_case *tc, void *data)
test_sess_remove(sess); test_sess_remove(sess);
/* Send INVALID PDN Connectivity Request */ /* Send INVALID PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue, "ims2", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "ims2", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 9; sess->pti = 9;

View File

@ -68,7 +68,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc"; test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca"; test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
/* eNB connects to MME */ /* eNB connects to MME */
@ -211,7 +211,7 @@ static void test1_func(abts_case *tc, void *data)
ogs_pkbuf_free(recvbuf); ogs_pkbuf_free(recvbuf);
/* Send PDN Connectivity Request */ /* Send PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP_RAT_TYPE_EUTRAN); sess = test_sess_add_by_apn(test_ue, "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess); ogs_assert(sess);
sess->pti = 5; sess->pti = 5;
@ -346,7 +346,7 @@ static void test1_func(abts_case *tc, void *data)
bearer = test_bearer_find_by_ue_ebi(test_ue, 7); bearer = test_bearer_find_by_ue_ebi(test_ue, 7);
ogs_assert(bearer); ogs_assert(bearer);
esmbuf = testesm_build_bearer_resource_modification_request( esmbuf = testesm_build_bearer_resource_modification_request(
bearer, OGS_GTP_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0, bearer, OGS_GTP2_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0,
ESM_CAUSE_REGULAR_DEACTIVATION); ESM_CAUSE_REGULAR_DEACTIVATION);
ABTS_PTR_NOTNULL(tc, esmbuf); ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf); sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
@ -508,7 +508,7 @@ static void test1_func(abts_case *tc, void *data)
bearer = test_bearer_find_by_ue_ebi(test_ue, 9); bearer = test_bearer_find_by_ue_ebi(test_ue, 9);
ogs_assert(bearer); ogs_assert(bearer);
esmbuf = testesm_build_bearer_resource_modification_request( esmbuf = testesm_build_bearer_resource_modification_request(
bearer, OGS_GTP_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0, bearer, OGS_GTP2_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0,
ESM_CAUSE_REGULAR_DEACTIVATION); ESM_CAUSE_REGULAR_DEACTIVATION);
ABTS_PTR_NOTNULL(tc, esmbuf); ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf); sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
@ -670,7 +670,7 @@ static void test1_func(abts_case *tc, void *data)
bearer = test_bearer_find_by_ue_ebi(test_ue, 11); bearer = test_bearer_find_by_ue_ebi(test_ue, 11);
ogs_assert(bearer); ogs_assert(bearer);
esmbuf = testesm_build_bearer_resource_modification_request( esmbuf = testesm_build_bearer_resource_modification_request(
bearer, OGS_GTP_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0, bearer, OGS_GTP2_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0,
ESM_CAUSE_REGULAR_DEACTIVATION); ESM_CAUSE_REGULAR_DEACTIVATION);
ABTS_PTR_NOTNULL(tc, esmbuf); ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf); sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
@ -832,7 +832,7 @@ static void test1_func(abts_case *tc, void *data)
bearer = test_bearer_find_by_ue_ebi(test_ue, 13); bearer = test_bearer_find_by_ue_ebi(test_ue, 13);
ogs_assert(bearer); ogs_assert(bearer);
esmbuf = testesm_build_bearer_resource_modification_request( esmbuf = testesm_build_bearer_resource_modification_request(
bearer, OGS_GTP_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0, bearer, OGS_GTP2_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0,
ESM_CAUSE_REGULAR_DEACTIVATION); ESM_CAUSE_REGULAR_DEACTIVATION);
ABTS_PTR_NOTNULL(tc, esmbuf); ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf); sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
@ -994,7 +994,7 @@ static void test1_func(abts_case *tc, void *data)
bearer = test_bearer_find_by_ue_ebi(test_ue, 15); bearer = test_bearer_find_by_ue_ebi(test_ue, 15);
ogs_assert(bearer); ogs_assert(bearer);
esmbuf = testesm_build_bearer_resource_modification_request( esmbuf = testesm_build_bearer_resource_modification_request(
bearer, OGS_GTP_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0, bearer, OGS_GTP2_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0,
ESM_CAUSE_REGULAR_DEACTIVATION); ESM_CAUSE_REGULAR_DEACTIVATION);
ABTS_PTR_NOTNULL(tc, esmbuf); ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf); sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
@ -1156,7 +1156,7 @@ static void test1_func(abts_case *tc, void *data)
bearer = test_bearer_find_by_ue_ebi(test_ue, 8); bearer = test_bearer_find_by_ue_ebi(test_ue, 8);
ogs_assert(bearer); ogs_assert(bearer);
esmbuf = testesm_build_bearer_resource_modification_request( esmbuf = testesm_build_bearer_resource_modification_request(
bearer, OGS_GTP_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0, bearer, OGS_GTP2_TFT_CODE_DELETE_PACKET_FILTERS_FROM_EXISTING, 0,
ESM_CAUSE_REGULAR_DEACTIVATION); ESM_CAUSE_REGULAR_DEACTIVATION);
ABTS_PTR_NOTNULL(tc, esmbuf); ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf); sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);