On 07 Oct 2015, at 16:18, Neels Hofmeyr
<nhofmeyr(a)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?