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
> 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?