nat: Add hook for rewriting a setup message
Create a new function, hand the data to this function, take back a possible modified msgb and invalidate parsed at this point.
This commit is contained in:
parent
76424392e0
commit
a914daf174
|
@ -343,4 +343,6 @@ struct gsm48_hdr *bsc_unpack_dtap(struct bsc_nat_parsed *parsed, struct msgb *ms
|
|||
int bsc_ussd_init(struct bsc_nat *nat);
|
||||
int bsc_check_ussd(struct sccp_connections *con, struct bsc_nat_parsed *parsed, struct msgb *msg);
|
||||
|
||||
struct msgb *bsc_nat_rewrite_setup(struct bsc_nat *nat, struct msgb *msg, struct bsc_nat_parsed *);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -858,6 +858,15 @@ static int forward_sccp_to_msc(struct bsc_connection *bsc, struct msgb *msg)
|
|||
/* hand data to a side channel */
|
||||
if (bsc_check_ussd(con, parsed, msg) == 1)
|
||||
con->con_local = 2;
|
||||
|
||||
/*
|
||||
* Optionally rewrite setup message. This can
|
||||
* replace the msg and the parsed structure becomes
|
||||
* invalid.
|
||||
*/
|
||||
msg = bsc_nat_rewrite_setup(bsc->nat, msg, parsed);
|
||||
talloc_free(parsed);
|
||||
parsed = NULL;
|
||||
}
|
||||
|
||||
con_bsc = con->bsc;
|
||||
|
@ -913,7 +922,8 @@ static int forward_sccp_to_msc(struct bsc_connection *bsc, struct msgb *msg)
|
|||
|
||||
/* send the non-filtered but maybe modified msg */
|
||||
queue_for_msc(con_msc, msg);
|
||||
talloc_free(parsed);
|
||||
if (parsed)
|
||||
talloc_free(parsed);
|
||||
return 0;
|
||||
|
||||
exit:
|
||||
|
|
|
@ -721,3 +721,10 @@ int bsc_write_cb(struct bsc_fd *bfd, struct msgb *msg)
|
|||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rewrite non global numbers... according to rules based on the IMSI
|
||||
*/
|
||||
struct msgb *bsc_nat_rewrite_setup(struct bsc_nat *nat, struct msgb *msg, struct bsc_nat_parsed *pa)
|
||||
{
|
||||
return msg;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue