> On 07 Oct 2015, at 16:18, Neels Hofmeyr <[email protected]> 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?


Reply via email to