[PATCH 01/10] Add GTP hub stub, as simplistic UDP forwarder.

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Holger Freyther holger at freyther.de
Thu Oct 8 08:48:07 UTC 2015


> On 07 Oct 2015, at 16:18, Neels Hofmeyr <nhofmeyr at sysmocom.de> wrote:
> 
> 
> +/* TODO move to osmocom/core/socket.c ? */

where did you take this from?



> +/* TODO move to osmocom/core/socket.c ? */


> +int osmo_sockaddr_init(struct sockaddr_storage *addr, socklen_t *addr_len,
> +		       uint16_t family, uint16_t type, uint8_t proto,
> +		       const char *host, uint16_t port)
> +{

ah yeah. the by hostname is a good idea. But this should only be used at the
beginning of an application as we don't want to block on a DNS query.

> 
> +static struct log_info_cat gtphub_categories[] = {

> +static const struct log_info gtphub_log_info = {
> +	.filter_fn = gtphub_log_filter_fn,
> +	.cat = gtphub_categories,
> +	.num_cat = ARRAY_SIZE(gtphub_categories),
> +};

nothing else will be used as debug log? Depending on the answer it might be
better to just always initialize the GTPHUB area..



> 
> +int gtp_relay(struct osmo_fd *from, struct sockaddr_storage *from_addr, socklen_t *from_addr_len,
> +	      struct osmo_fd *to, struct sockaddr_storage *to_addr, socklen_t to_addr_len)
> +{
> +	static uint8_t buf[4096];
> +
> +	errno = 0;
> +	ssize_t received = recvfrom(from->fd, buf, sizeof(buf), 0,
> +				    (struct sockaddr*)from_addr, from_addr_len);
> +

When the first gbproxy was built our buffer was smaller and we truncated messages. Now 4k
is pretty big and bigger than our expectation for a UDP message. If you use recvmsg then the
msg_flags will have MSG_TRUNC set or not. Not sure if you want to use it.



> +	rc = osmo_sock_init_ofd(&clients_ofd, AF_UNSPEC, SOCK_DGRAM, IPPROTO_UDP, clients_addr_str, clients_port, OSMO_SOCK_F_BIND);
> +	rc = osmo_sock_init_ofd(&server_ofd, AF_UNSPEC, SOCK_DGRAM, IPPROTO_UDP, server_rx_addr_str, server_rx_port, OSMO_SOCK_F_BIND);


Who is the server? who is the client? Maybe give it names to what we expect on the side?
One is the SGSN, the other is the GGSN?





More information about the OpenBSC mailing list