add sock type in enb context
This commit is contained in:
parent
6412231f29
commit
7025491846
|
@ -1009,6 +1009,7 @@ mme_enb_t* mme_enb_add(sock_id sock, c_sockaddr_t *addr)
|
|||
|
||||
enb->sock = sock;
|
||||
enb->addr = addr;
|
||||
enb->sock_type = mme_enb_sock_type(enb->sock);
|
||||
|
||||
list_init(&enb->enb_ue_list);
|
||||
|
||||
|
@ -1040,7 +1041,7 @@ status_t mme_enb_remove(mme_enb_t *enb)
|
|||
|
||||
enb_ue_remove_in_enb(enb);
|
||||
|
||||
if (mme_enb_sock_is_stream(enb->sock))
|
||||
if (enb->sock_type == SOCK_STREAM)
|
||||
s1ap_sctp_delete(enb->sock);
|
||||
core_free(enb->addr);
|
||||
|
||||
|
@ -1120,10 +1121,17 @@ mme_enb_t *mme_enb_this(hash_index_t *hi)
|
|||
return hash_this_val(hi);
|
||||
}
|
||||
|
||||
int mme_enb_sock_is_stream(sock_id sock)
|
||||
int mme_enb_sock_type(sock_id sock)
|
||||
{
|
||||
d_assert(sock, return 0,);
|
||||
return (mme_self()->s1ap_sock != sock);
|
||||
if (mme_self()->s1ap_sock == sock)
|
||||
{
|
||||
return SOCK_SEQPACKET;
|
||||
}
|
||||
else
|
||||
{
|
||||
return SOCK_STREAM;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -113,6 +113,7 @@ typedef struct _mme_enb_t {
|
|||
fsm_t sm; /* A state machine */
|
||||
|
||||
c_uint32_t enb_id; /* eNB_ID received from eNB */
|
||||
int sock_type; /* SOCK_STREAM or SOCK_SEQPACKET */
|
||||
sock_id sock; /* eNB S1AP Socket */
|
||||
c_sockaddr_t *addr; /* eNB S1AP Address */
|
||||
|
||||
|
@ -454,7 +455,7 @@ CORE_DECLARE(status_t) mme_enb_set_enb_id(
|
|||
CORE_DECLARE(hash_index_t *) mme_enb_first();
|
||||
CORE_DECLARE(hash_index_t *) mme_enb_next(hash_index_t *hi);
|
||||
CORE_DECLARE(mme_enb_t *) mme_enb_this(hash_index_t *hi);
|
||||
CORE_DECLARE(int) mme_enb_sock_is_stream(sock_id sock);
|
||||
CORE_DECLARE(int) mme_enb_sock_type(sock_id sock);
|
||||
|
||||
CORE_DECLARE(mme_ue_t*) mme_ue_add(enb_ue_t *enb_ue);
|
||||
CORE_DECLARE(status_t) mme_ue_remove(mme_ue_t *mme_ue);
|
||||
|
|
|
@ -89,11 +89,7 @@ void mme_state_operational(fsm_t *s, event_t *e)
|
|||
d_trace(1, "eNB-S1 accepted[%s] in master_sm module\n",
|
||||
CORE_NTOP(addr, buf));
|
||||
|
||||
if (mme_enb_sock_is_stream(sock))
|
||||
enb = mme_enb_find_by_sock(sock);
|
||||
else
|
||||
enb = mme_enb_find_by_addr(addr);
|
||||
|
||||
enb = mme_enb_find_by_addr(addr);
|
||||
if (!enb)
|
||||
{
|
||||
#if USE_USRSCTP != 1
|
||||
|
@ -125,7 +121,13 @@ void mme_state_operational(fsm_t *s, event_t *e)
|
|||
addr = (c_sockaddr_t *)event_get_param2(e);
|
||||
d_assert(addr, break, "Null param");
|
||||
|
||||
if (mme_enb_sock_is_stream(sock))
|
||||
/*
|
||||
* <Connection Refused>
|
||||
* if socket type is SOCK_STREAM,
|
||||
* I'm not sure whether address is available or not.
|
||||
* So, I'll use 'sock_id' at this point.
|
||||
*/
|
||||
if (mme_enb_sock_type(sock) == SOCK_STREAM)
|
||||
enb = mme_enb_find_by_sock(sock);
|
||||
else
|
||||
enb = mme_enb_find_by_addr(addr);
|
||||
|
@ -161,10 +163,7 @@ void mme_state_operational(fsm_t *s, event_t *e)
|
|||
pkbuf = (pkbuf_t *)event_get_param3(e);
|
||||
d_assert(pkbuf, break, "Null param");
|
||||
|
||||
if (mme_enb_sock_is_stream(sock))
|
||||
enb = mme_enb_find_by_sock(sock);
|
||||
else
|
||||
enb = mme_enb_find_by_addr(addr);
|
||||
enb = mme_enb_find_by_addr(addr);
|
||||
core_free(addr);
|
||||
|
||||
d_assert(enb, break, "No eNB context");
|
||||
|
|
|
@ -19,7 +19,8 @@ status_t s1ap_send_to_enb(mme_enb_t *enb, pkbuf_t *pkbuf)
|
|||
d_assert(pkbuf,,);
|
||||
d_assert(enb->sock,,);
|
||||
|
||||
rv = s1ap_send(enb->sock, pkbuf, enb->addr);
|
||||
rv = s1ap_send(enb->sock, pkbuf,
|
||||
enb->sock_type == SOCK_STREAM ? NULL : enb->addr);
|
||||
if (rv != CORE_OK)
|
||||
{
|
||||
d_error("s1_send error");
|
||||
|
|
|
@ -203,7 +203,7 @@ status_t s1ap_send(sock_id sock, pkbuf_t *pkbuf, c_sockaddr_t *addr)
|
|||
d_assert(pkbuf, return CORE_ERROR,);
|
||||
|
||||
sent = core_sctp_sendmsg(sock, pkbuf->payload, pkbuf->len,
|
||||
NULL, SCTP_S1AP_PPID, 0);
|
||||
addr, SCTP_S1AP_PPID, 0);
|
||||
d_trace(10,"Sent %d->%d bytes\n", pkbuf->len, sent);
|
||||
d_trace_hex(10, pkbuf->payload, pkbuf->len);
|
||||
if (sent < 0 || sent != pkbuf->len)
|
||||
|
|
Loading…
Reference in New Issue