On Wed, Nov 18, 2009 at 11:40:10PM +0100, Sylvain Munaut wrote:
From: Sylvain Munaut <tnt(a)246tNt.com>
Note, there is still an ugly hack: We send packets to the
first BTS we find and not the "right" one, mostly because
I had no idea how to find the right one ...
ok, I think we should wait for a proper solution, rather than replacing one
hack with another one.
@@ -346,6 +347,9 @@ struct gsm_bts {
struct {
u_int16_t site_id;
u_int16_t bts_id;
+
+ struct in_addr ina_local;
+ struct in_addr ina_remote;
} ip_access;
this makes sense, sure.
- /* FIXME: patch our own IP address as SGSN IP */
- //nanobts_attr_nsvc0[10] =
+ /* patch our own IP address as SGSN IP */
+ memcpy(&nanobts_attr_nsvc0[10], &bts->ip_access.ina_local, 4);
that, too.
@@ -513,11 +527,19 @@ static int
handle_gprs_write(struct bsc_fd *bfd)
int ipac_gprs_send(struct msgb *msg)
{
+ struct gsm_bts *bts;
struct sockaddr_in sin;
int rc;
+ /* FIXME: Just take the first ip.access bts we find */
+ llist_for_each_entry(bts, &e1h->gsmnet->bts_list, list) {
+ if (!is_ipaccess_bts(bts))
+ continue;
+ break;
+ }
+
msg->trx will be set, so you can simply dereference msg->trx->bts to get to the
bts to which this should be sent.
please change that, test it and resubmit. Thanks!
--
- Harald Welte <laforge(a)gnumonks.org>
http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)