forked from acouzens/open5gs
MME freeDiameter configuration is done
This commit is contained in:
parent
b166adf3bd
commit
f945b483e8
|
@ -259,182 +259,190 @@ status_t mme_context_parse_config()
|
|||
d_assert(mme_key, return CORE_ERROR,);
|
||||
if (!strcmp(mme_key, "freeDiameter"))
|
||||
{
|
||||
self.fd_conf_path = yaml_iter_value(&mme_iter);
|
||||
}
|
||||
else if (!strcmp(mme_key, "fd"))
|
||||
{
|
||||
yaml_iter_t fd_iter;
|
||||
yaml_iter_recurse(&mme_iter, &fd_iter);
|
||||
|
||||
while(yaml_iter_next(&fd_iter))
|
||||
yaml_node_t *node =
|
||||
yaml_document_get_node(document, mme_iter.pair->value);
|
||||
d_assert(node, return CORE_ERROR,);
|
||||
if (node->type == YAML_SCALAR_NODE)
|
||||
{
|
||||
const char *fd_key = yaml_iter_key(&fd_iter);
|
||||
d_assert(fd_key, return CORE_ERROR,);
|
||||
if (!strcmp(fd_key, "identity"))
|
||||
{
|
||||
self.fd_config->cnf_diamid =
|
||||
yaml_iter_value(&fd_iter);
|
||||
}
|
||||
else if (!strcmp(fd_key, "realm"))
|
||||
{
|
||||
self.fd_config->cnf_diamrlm =
|
||||
yaml_iter_value(&fd_iter);
|
||||
}
|
||||
else if (!strcmp(fd_key, "port"))
|
||||
{
|
||||
const char *v = yaml_iter_value(&fd_iter);
|
||||
if (v) self.fd_config->cnf_port = atoi(v);
|
||||
}
|
||||
else if (!strcmp(fd_key, "sec_port"))
|
||||
{
|
||||
const char *v = yaml_iter_value(&fd_iter);
|
||||
if (v) self.fd_config->cnf_port_tls = atoi(v);
|
||||
}
|
||||
else if (!strcmp(fd_key, "no_sctp"))
|
||||
{
|
||||
self.fd_config->cnf_flags.no_sctp =
|
||||
yaml_iter_bool(&fd_iter);
|
||||
}
|
||||
else if (!strcmp(fd_key, "listen_on"))
|
||||
{
|
||||
self.fd_config->cnf_addr =
|
||||
yaml_iter_value(&fd_iter);
|
||||
}
|
||||
else if (!strcmp(fd_key, "load_extension"))
|
||||
{
|
||||
yaml_iter_t ext_array, ext_iter;
|
||||
yaml_iter_recurse(&fd_iter, &ext_array);
|
||||
do
|
||||
{
|
||||
const char *module = NULL;
|
||||
const char *conf = NULL;
|
||||
|
||||
if (yaml_iter_type(&ext_array) ==
|
||||
YAML_MAPPING_NODE)
|
||||
{
|
||||
memcpy(&ext_iter, &ext_array,
|
||||
sizeof(yaml_iter_t));
|
||||
}
|
||||
else if (yaml_iter_type(&ext_array) ==
|
||||
YAML_SEQUENCE_NODE)
|
||||
{
|
||||
if (!yaml_iter_next(&ext_array))
|
||||
break;
|
||||
yaml_iter_recurse(&ext_array, &ext_iter);
|
||||
}
|
||||
else if (yaml_iter_type(&ext_array) ==
|
||||
YAML_SCALAR_NODE)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
d_assert(0, return CORE_ERROR,);
|
||||
|
||||
while(yaml_iter_next(&ext_iter))
|
||||
{
|
||||
const char *ext_key =
|
||||
yaml_iter_key(&ext_iter);
|
||||
d_assert(ext_key,
|
||||
return CORE_ERROR,);
|
||||
if (!strcmp(ext_key, "module"))
|
||||
{
|
||||
module = yaml_iter_value(&ext_iter);
|
||||
}
|
||||
else if (!strcmp(ext_key, "conf"))
|
||||
{
|
||||
conf = yaml_iter_value(&ext_iter);
|
||||
}
|
||||
else
|
||||
d_warn("unknown key `%s`", ext_key);
|
||||
}
|
||||
|
||||
if (module)
|
||||
{
|
||||
self.fd_config->
|
||||
ext[self.fd_config->num_of_ext].
|
||||
module = module;
|
||||
self.fd_config->
|
||||
ext[self.fd_config->num_of_ext].
|
||||
conf = conf;
|
||||
self.fd_config->num_of_ext++;
|
||||
}
|
||||
} while(yaml_iter_type(&ext_array) ==
|
||||
YAML_SEQUENCE_NODE);
|
||||
}
|
||||
else if (!strcmp(fd_key, "connect"))
|
||||
{
|
||||
yaml_iter_t conn_array, conn_iter;
|
||||
yaml_iter_recurse(&fd_iter, &conn_array);
|
||||
do
|
||||
{
|
||||
const char *identity = NULL;
|
||||
const char *addr = NULL;
|
||||
c_uint16_t port = 0;
|
||||
|
||||
if (yaml_iter_type(&conn_array) ==
|
||||
YAML_MAPPING_NODE)
|
||||
{
|
||||
memcpy(&conn_iter, &conn_array,
|
||||
sizeof(yaml_iter_t));
|
||||
}
|
||||
else if (yaml_iter_type(&conn_array) ==
|
||||
YAML_SEQUENCE_NODE)
|
||||
{
|
||||
if (!yaml_iter_next(&conn_array))
|
||||
break;
|
||||
yaml_iter_recurse(&conn_array, &conn_iter);
|
||||
}
|
||||
else if (yaml_iter_type(&conn_array) ==
|
||||
YAML_SCALAR_NODE)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
d_assert(0, return CORE_ERROR,);
|
||||
|
||||
while(yaml_iter_next(&conn_iter))
|
||||
{
|
||||
const char *conn_key =
|
||||
yaml_iter_key(&conn_iter);
|
||||
d_assert(conn_key,
|
||||
return CORE_ERROR,);
|
||||
if (!strcmp(conn_key, "identity"))
|
||||
{
|
||||
identity = yaml_iter_value(&conn_iter);
|
||||
}
|
||||
else if (!strcmp(conn_key, "addr"))
|
||||
{
|
||||
addr = yaml_iter_value(&conn_iter);
|
||||
}
|
||||
else if (!strcmp(conn_key, "port"))
|
||||
{
|
||||
const char *v =
|
||||
yaml_iter_value(&conn_iter);
|
||||
if (v) port = atoi(v);
|
||||
}
|
||||
else
|
||||
d_warn("unknown key `%s`", conn_key);
|
||||
}
|
||||
|
||||
if (identity && addr)
|
||||
{
|
||||
self.fd_config->
|
||||
conn[self.fd_config->num_of_conn].
|
||||
identity = identity;
|
||||
self.fd_config->
|
||||
conn[self.fd_config->num_of_conn].
|
||||
addr = addr;
|
||||
self.fd_config->
|
||||
conn[self.fd_config->num_of_conn].
|
||||
port = port;
|
||||
self.fd_config->num_of_conn++;
|
||||
}
|
||||
} while(yaml_iter_type(&conn_array) ==
|
||||
YAML_SEQUENCE_NODE);
|
||||
}
|
||||
else
|
||||
d_warn("unknown key `%s`", fd_key);
|
||||
self.fd_conf_path = yaml_iter_value(&mme_iter);
|
||||
}
|
||||
else if (node->type == YAML_MAPPING_NODE)
|
||||
{
|
||||
yaml_iter_t fd_iter;
|
||||
yaml_iter_recurse(&mme_iter, &fd_iter);
|
||||
|
||||
while(yaml_iter_next(&fd_iter))
|
||||
{
|
||||
const char *fd_key = yaml_iter_key(&fd_iter);
|
||||
d_assert(fd_key, return CORE_ERROR,);
|
||||
if (!strcmp(fd_key, "identity"))
|
||||
{
|
||||
self.fd_config->cnf_diamid =
|
||||
yaml_iter_value(&fd_iter);
|
||||
}
|
||||
else if (!strcmp(fd_key, "realm"))
|
||||
{
|
||||
self.fd_config->cnf_diamrlm =
|
||||
yaml_iter_value(&fd_iter);
|
||||
}
|
||||
else if (!strcmp(fd_key, "port"))
|
||||
{
|
||||
const char *v = yaml_iter_value(&fd_iter);
|
||||
if (v) self.fd_config->cnf_port = atoi(v);
|
||||
}
|
||||
else if (!strcmp(fd_key, "sec_port"))
|
||||
{
|
||||
const char *v = yaml_iter_value(&fd_iter);
|
||||
if (v) self.fd_config->cnf_port_tls = atoi(v);
|
||||
}
|
||||
else if (!strcmp(fd_key, "no_sctp"))
|
||||
{
|
||||
self.fd_config->cnf_flags.no_sctp =
|
||||
yaml_iter_bool(&fd_iter);
|
||||
}
|
||||
else if (!strcmp(fd_key, "listen_on"))
|
||||
{
|
||||
self.fd_config->cnf_addr =
|
||||
yaml_iter_value(&fd_iter);
|
||||
}
|
||||
else if (!strcmp(fd_key, "load_extension"))
|
||||
{
|
||||
yaml_iter_t ext_array, ext_iter;
|
||||
yaml_iter_recurse(&fd_iter, &ext_array);
|
||||
do
|
||||
{
|
||||
const char *module = NULL;
|
||||
const char *conf = NULL;
|
||||
|
||||
if (yaml_iter_type(&ext_array) ==
|
||||
YAML_MAPPING_NODE)
|
||||
{
|
||||
memcpy(&ext_iter, &ext_array,
|
||||
sizeof(yaml_iter_t));
|
||||
}
|
||||
else if (yaml_iter_type(&ext_array) ==
|
||||
YAML_SEQUENCE_NODE)
|
||||
{
|
||||
if (!yaml_iter_next(&ext_array))
|
||||
break;
|
||||
yaml_iter_recurse(
|
||||
&ext_array, &ext_iter);
|
||||
}
|
||||
else if (yaml_iter_type(&ext_array) ==
|
||||
YAML_SCALAR_NODE)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
d_assert(0, return CORE_ERROR,);
|
||||
|
||||
while(yaml_iter_next(&ext_iter))
|
||||
{
|
||||
const char *ext_key =
|
||||
yaml_iter_key(&ext_iter);
|
||||
d_assert(ext_key,
|
||||
return CORE_ERROR,);
|
||||
if (!strcmp(ext_key, "module"))
|
||||
{
|
||||
module = yaml_iter_value(&ext_iter);
|
||||
}
|
||||
else if (!strcmp(ext_key, "conf"))
|
||||
{
|
||||
conf = yaml_iter_value(&ext_iter);
|
||||
}
|
||||
else
|
||||
d_warn("unknown key `%s`", ext_key);
|
||||
}
|
||||
|
||||
if (module)
|
||||
{
|
||||
self.fd_config->
|
||||
ext[self.fd_config->num_of_ext].
|
||||
module = module;
|
||||
self.fd_config->
|
||||
ext[self.fd_config->num_of_ext].
|
||||
conf = conf;
|
||||
self.fd_config->num_of_ext++;
|
||||
}
|
||||
} while(yaml_iter_type(&ext_array) ==
|
||||
YAML_SEQUENCE_NODE);
|
||||
}
|
||||
else if (!strcmp(fd_key, "connect"))
|
||||
{
|
||||
yaml_iter_t conn_array, conn_iter;
|
||||
yaml_iter_recurse(&fd_iter, &conn_array);
|
||||
do
|
||||
{
|
||||
const char *identity = NULL;
|
||||
const char *addr = NULL;
|
||||
c_uint16_t port = 0;
|
||||
|
||||
if (yaml_iter_type(&conn_array) ==
|
||||
YAML_MAPPING_NODE)
|
||||
{
|
||||
memcpy(&conn_iter, &conn_array,
|
||||
sizeof(yaml_iter_t));
|
||||
}
|
||||
else if (yaml_iter_type(&conn_array) ==
|
||||
YAML_SEQUENCE_NODE)
|
||||
{
|
||||
if (!yaml_iter_next(&conn_array))
|
||||
break;
|
||||
yaml_iter_recurse(&conn_array, &conn_iter);
|
||||
}
|
||||
else if (yaml_iter_type(&conn_array) ==
|
||||
YAML_SCALAR_NODE)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
d_assert(0, return CORE_ERROR,);
|
||||
|
||||
while(yaml_iter_next(&conn_iter))
|
||||
{
|
||||
const char *conn_key =
|
||||
yaml_iter_key(&conn_iter);
|
||||
d_assert(conn_key,
|
||||
return CORE_ERROR,);
|
||||
if (!strcmp(conn_key, "identity"))
|
||||
{
|
||||
identity = yaml_iter_value(&conn_iter);
|
||||
}
|
||||
else if (!strcmp(conn_key, "addr"))
|
||||
{
|
||||
addr = yaml_iter_value(&conn_iter);
|
||||
}
|
||||
else if (!strcmp(conn_key, "port"))
|
||||
{
|
||||
const char *v =
|
||||
yaml_iter_value(&conn_iter);
|
||||
if (v) port = atoi(v);
|
||||
}
|
||||
else
|
||||
d_warn("unknown key `%s`", conn_key);
|
||||
}
|
||||
|
||||
if (identity && addr)
|
||||
{
|
||||
self.fd_config->
|
||||
conn[self.fd_config->num_of_conn].
|
||||
identity = identity;
|
||||
self.fd_config->
|
||||
conn[self.fd_config->num_of_conn].
|
||||
addr = addr;
|
||||
self.fd_config->
|
||||
conn[self.fd_config->num_of_conn].
|
||||
port = port;
|
||||
self.fd_config->num_of_conn++;
|
||||
}
|
||||
} while(yaml_iter_type(&conn_array) ==
|
||||
YAML_SEQUENCE_NODE);
|
||||
}
|
||||
else
|
||||
d_warn("unknown key `%s`", fd_key);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (!strcmp(mme_key, "relative_capacity"))
|
||||
{
|
||||
|
|
|
@ -32,28 +32,30 @@ parameter:
|
|||
|
||||
mme:
|
||||
freeDiameter: mme.conf
|
||||
fd:
|
||||
identity: mme.localdomain
|
||||
realm: localdomain
|
||||
no_sctp: true
|
||||
# port: 3868
|
||||
# sec_port: 5868
|
||||
listen_on: 127.0.0.3
|
||||
load_extension:
|
||||
- module: dbg_msg_dumps.so
|
||||
conf: 0x8888
|
||||
- module: dict_rfc5777.so
|
||||
- module: dict_mip6i.so
|
||||
- module: dict_nasreq.so
|
||||
- module: dict_nas_mipv6.so
|
||||
- module: dict_dcca.so
|
||||
- module: dict_dcca_3gpp.so
|
||||
- module: dict_s6a.so
|
||||
connect:
|
||||
- identity: hss.localdomain
|
||||
addr: 127.0.0.4
|
||||
# port: 3868
|
||||
|
||||
#
|
||||
# freeDiameter:
|
||||
# identity: mme.localdomain
|
||||
# realm: localdomain
|
||||
# no_sctp: true
|
||||
## port: 3868
|
||||
## sec_port: 5868
|
||||
# listen_on: 127.0.0.3
|
||||
# load_extension:
|
||||
# - module: dbg_msg_dumps.so
|
||||
# conf: 0x8888
|
||||
# - module: dict_rfc5777.so
|
||||
# - module: dict_mip6i.so
|
||||
# - module: dict_nasreq.so
|
||||
# - module: dict_nas_mipv6.so
|
||||
# - module: dict_dcca.so
|
||||
# - module: dict_dcca_3gpp.so
|
||||
# - module: dict_s6a.so
|
||||
# connect:
|
||||
# - identity: hss.localdomain
|
||||
# addr: 127.0.0.4
|
||||
## port: 3868
|
||||
#
|
||||
|
||||
#
|
||||
# <S1AP Server>>
|
||||
|
|
Loading…
Reference in New Issue