silent_call: Use the gsm_subscriber_connection instead of lchan->conn
diff --git a/openbsc/include/openbsc/silent_call.h b/openbsc/include/openbsc/silent_call.h
index fefc518..2492903 100644
--- a/openbsc/include/openbsc/silent_call.h
+++ b/openbsc/include/openbsc/silent_call.h
@@ -1,10 +1,12 @@
#ifndef _SILENT_CALL_H
#define _SILENT_CALL_H
+struct gsm_subscriber_connection;
+
extern int gsm_silent_call_start(struct gsm_subscriber *subscr,
void *data, int type);
extern int gsm_silent_call_stop(struct gsm_subscriber *subscr);
-extern int silent_call_rx(struct msgb *msg);
-extern int silent_call_reroute(struct msgb *msg);
+extern int silent_call_rx(struct gsm_subscriber_connection *conn, struct msgb *msg);
+extern int silent_call_reroute(struct gsm_subscriber_connection *conn, struct msgb *msg);
#endif /* _SILENT_CALL_H */
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index e76a63a..520eed0 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -3090,8 +3090,8 @@
u_int8_t pdisc = gh->proto_discr & 0x0f;
int rc = 0;
- if (silent_call_reroute(msg))
- return silent_call_rx(msg);
+ if (silent_call_reroute(conn, msg))
+ return silent_call_rx(conn, msg);
switch (pdisc) {
case GSM48_PDISC_CC:
diff --git a/openbsc/src/silent_call.c b/openbsc/src/silent_call.c
index 0471bff..397a3e4 100644
--- a/openbsc/src/silent_call.c
+++ b/openbsc/src/silent_call.c
@@ -72,7 +72,7 @@
}
/* receive a layer 3 message from a silent call */
-int silent_call_rx(struct msgb *msg)
+int silent_call_rx(struct gsm_subscriber_connection *conn, struct msgb *msg)
{
/* FIXME: do something like sending it through a UDP port */
return 0;
@@ -90,14 +90,14 @@
};
/* decide if we need to reroute a message as part of a silent call */
-int silent_call_reroute(struct msgb *msg)
+int silent_call_reroute(struct gsm_subscriber_connection *conn, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
u_int8_t pdisc = gh->proto_discr & 0x0f;
int i;
/* if we're not part of a silent call, never reroute */
- if (!msg->lchan->conn.silent_call)
+ if (!conn->silent_call)
return 0;
/* check if we are a special message that is handled in openbsc */