From 80d911e5a649b4c9cf3bb506c766b1611a8e95aa Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Sun, 22 Aug 2021 18:27:33 +0200 Subject: Updated libs --- src/libosmocc/endpoint.c | 70 +++++++++++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 28 deletions(-) (limited to 'src/libosmocc/endpoint.c') diff --git a/src/libosmocc/endpoint.c b/src/libosmocc/endpoint.c index e1d6027..120b53c 100644 --- a/src/libosmocc/endpoint.c +++ b/src/libosmocc/endpoint.c @@ -172,6 +172,27 @@ static int split_address(const char *address, const char **host_p, uint16_t *por return 0; } + +osmo_cc_call_t *osmo_cc_get_attached_interface(osmo_cc_endpoint_t *ep, const char *interface) +{ + osmo_cc_call_t *att; + + for (att = ep->call_list; att; att = att->next) { + if (att->state != OSMO_CC_STATE_ATTACH_IN) + continue; + /* no interface given, just use the attached peer */ + if (!interface[0]) + break; + /* no interface name given on attached peer, ignore it */ + if (!att->attached_name || !att->attached_name[0]) + continue; + /* interface given, use the attached peer with the same interface name */ + if (!strcmp(interface, att->attached_name)) + break; + } + + return att; +} /* helper to forward message to upper layer */ static void forward_to_ul(osmo_cc_call_t *call, osmo_cc_msg_t *msg) { @@ -233,19 +254,7 @@ reject: if (rc < 0) interface[0] = '\0'; /* check for incoming attachment */ - for (att = call->ep->call_list; att; att = att->next) { - if (att->state != OSMO_CC_STATE_ATTACH_IN) - continue; - /* no interface given, just use the attached peer */ - if (!interface[0]) - break; - /* no interface name given on attached peer, ignore it */ - if (!att->attached_name || !att->attached_name[0]) - continue; - /* interface given, use the attached peer with the same interface name */ - if (!strcmp(interface, att->attached_name)) - break; - } + att = osmo_cc_get_attached_interface(call->ep, interface); if (!att && !interface[0]) { PDEBUG(DCC, DEBUG_ERROR, "No remote peer attached, rejecting call.\n"); goto reject; @@ -351,7 +360,7 @@ void attach_req(osmo_cc_call_t *call, osmo_cc_msg_t *msg) rel: /* change to REL_REQ */ msg->type = OSMO_CC_MSG_REL_IND; - PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_name(msg->type)); + PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_value2name(msg->type)); /* message to socket */ forward_to_ul(call, msg); @@ -382,7 +391,7 @@ rel: /* changing to confirm message */ msg->type = OSMO_CC_MSG_ATTACH_CNF; - PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_name(msg->type)); + PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_value2name(msg->type)); /* message to socket */ forward_to_ul(call, msg); @@ -633,7 +642,7 @@ static void disc_collision_ind(osmo_cc_call_t *call, osmo_cc_msg_t *msg) /* change to REL_REQ */ msg->type = OSMO_CC_MSG_REL_REQ; - PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_name(msg->type)); + PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_value2name(msg->type)); /* to lower layer */ forward_to_ll(call, msg); @@ -654,7 +663,7 @@ static void disc_collision_req(osmo_cc_call_t *call, osmo_cc_msg_t *msg) if (call->lower_layer_released) { /* change to REL_REQ */ msg->type = OSMO_CC_MSG_REL_IND; - PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_name(msg->type)); + PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_value2name(msg->type)); /* to upper layer */ forward_to_ul(call, msg); @@ -692,7 +701,7 @@ static void rej_ind_disc(osmo_cc_call_t *call, osmo_cc_msg_t *msg) /* change to REL_IND */ msg->type = OSMO_CC_MSG_REL_IND; - PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_name(msg->type)); + PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_value2name(msg->type)); /* to upper layer */ forward_to_ul(call, msg); @@ -708,7 +717,7 @@ static void rej_req_disc(osmo_cc_call_t *call, osmo_cc_msg_t *msg) /* change to REL_REQ */ msg->type = OSMO_CC_MSG_REL_REQ; - PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_name(msg->type)); + PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_value2name(msg->type)); /* to lower layer */ forward_to_ll(call, msg); @@ -737,7 +746,7 @@ static void rel_ind_other(osmo_cc_call_t *call, osmo_cc_msg_t *msg) /* change to DISC_IND */ msg->type = OSMO_CC_MSG_DISC_IND; - PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_name(msg->type)); + PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_value2name(msg->type)); call->lower_layer_released = 1; /* to upper layer */ @@ -764,7 +773,7 @@ static void rel_req_other(osmo_cc_call_t *call, osmo_cc_msg_t *msg) /* change to DISC_REQ */ msg->type = OSMO_CC_MSG_DISC_REQ; - PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_name(msg->type)); + PDEBUG(DCC, DEBUG_INFO, "Changing message to %s.\n", osmo_cc_msg_value2name(msg->type)); call->upper_layer_released = 1; /* to lower layer */ @@ -914,13 +923,15 @@ static void handle_msg(osmo_cc_call_t *call, osmo_cc_msg_t *msg) break; if (i == STATEMACHINE_LEN) { PDEBUG(DCC, DEBUG_INFO, "Message %s unhandled at state %s (callref %d)\n", - osmo_cc_msg_name(msg->type), state_names[call->state], call->callref); + osmo_cc_msg_value2name(msg->type), state_names[call->state], call->callref); osmo_cc_free_msg(msg); return; } PDEBUG(DCC, DEBUG_INFO, "Handle message %s at state %s (callref %d)\n", - osmo_cc_msg_name(msg->type), state_names[call->state], call->callref); + osmo_cc_msg_value2name(msg->type), state_names[call->state], call->callref); + if (debuglevel <= DEBUG_INFO) + osmo_cc_debug_ie(msg, DEBUG_INFO); statemachine_list[i].action(call, msg); } @@ -1146,7 +1157,7 @@ static int osmo_cc_set_address(osmo_cc_endpoint_t *ep, const char *text) PDEBUG(DCC, DEBUG_ERROR, "Given local address '%s' is invalid.\n", *host_p); return -EINVAL; } - osmo_cc_set_local_peer(osmo_cc_session_nettype_inet, addrtype, *host_p); + osmo_cc_set_local_peer(&ep->session_config, osmo_cc_session_nettype_inet, addrtype, *host_p); return 0; } @@ -1166,7 +1177,7 @@ static void osmo_cc_help_rtp(void) printf("interfaces, between machines, local machine's IP must be given.\n\n"); } -static int osmo_cc_set_rtp(const char *text) +static int osmo_cc_set_rtp(osmo_cc_endpoint_t *ep, const char *text) { int peer = 0, ports = 0; @@ -1195,7 +1206,7 @@ static int osmo_cc_set_rtp(const char *text) PDEBUG(DCC, DEBUG_ERROR, "Given RTP address '%s' is invalid.\n", text); return -EINVAL; } - osmo_cc_set_local_peer(osmo_cc_session_nettype_inet, addrtype, text); + osmo_cc_set_local_peer(&ep->session_config, osmo_cc_session_nettype_inet, addrtype, text); return 0; } @@ -1227,7 +1238,7 @@ static int osmo_cc_set_rtp(const char *text) from = from * 10 + *text - '0'; } - osmo_cc_set_rtp_ports(from, to); + osmo_cc_set_rtp_ports(&ep->session_config, from, to); return 0; } @@ -1270,6 +1281,9 @@ int osmo_cc_new(osmo_cc_endpoint_t *ep, const char *version, const char *name, u ep->serving_location = serving_location; ep->priv = priv; + osmo_cc_set_local_peer(&ep->session_config, osmo_cc_session_nettype_inet, osmo_cc_session_addrtype_ipv4, "127.0.0.1"); + osmo_cc_set_rtp_ports(&ep->session_config, 16384, 32767); + /* apply args */ for (i = 0; i < argc; i++) { if (!strncasecmp(argv[i], "local", 5)) { @@ -1285,7 +1299,7 @@ int osmo_cc_new(osmo_cc_endpoint_t *ep, const char *version, const char *name, u } } else if (!strncasecmp(argv[i], "rtp", 3)) { - rc = osmo_cc_set_rtp(argv[i]); + rc = osmo_cc_set_rtp(ep, argv[i]); if (rc < 0) { return rc; } -- cgit v1.2.3