[nat] Make create_sccp_src_ref return the SCCP Connection.
Right now it was not possible to just find a connection, by returning
the connection that is created we will have direct access to it. It
will be used by the local connection handling.
diff --git a/openbsc/src/nat/bsc_sccp.c b/openbsc/src/nat/bsc_sccp.c
index 47cd9ce..94b332a 100644
--- a/openbsc/src/nat/bsc_sccp.c
+++ b/openbsc/src/nat/bsc_sccp.c
@@ -82,7 +82,8 @@
return -1;
}
-int create_sccp_src_ref(struct bsc_connection *bsc, struct bsc_nat_parsed *parsed)
+struct sccp_connections *create_sccp_src_ref(struct bsc_connection *bsc,
+ struct bsc_nat_parsed *parsed)
{
struct sccp_connections *conn;
@@ -101,11 +102,11 @@
bsc_mgcp_dlcx(conn);
llist_del(&conn->list_entry);
talloc_free(conn);
- return -1;
+ return NULL;
} else {
clock_gettime(CLOCK_MONOTONIC, &conn->creation_time);
bsc_mgcp_dlcx(conn);
- return 0;
+ return conn;
}
}
@@ -113,7 +114,7 @@
conn = talloc_zero(bsc->nat, struct sccp_connections);
if (!conn) {
LOGP(DNAT, LOGL_ERROR, "Memory allocation failure.\n");
- return -1;
+ return NULL;
}
conn->bsc = bsc;
@@ -122,7 +123,7 @@
if (assign_src_local_reference(&conn->patched_ref, bsc->nat) != 0) {
LOGP(DNAT, LOGL_ERROR, "Failed to assign a ref.\n");
talloc_free(conn);
- return -1;
+ return NULL;
}
bsc_mgcp_init(conn);
@@ -134,7 +135,7 @@
sccp_src_ref_to_int(&conn->real_ref),
sccp_src_ref_to_int(&conn->patched_ref), bsc);
- return 0;
+ return conn;
}
int update_sccp_src_ref(struct sccp_connections *sccp, struct bsc_nat_parsed *parsed)