diff --git a/srslte/lib/io/netsink.c b/srslte/lib/io/netsink.c index bc1648933..bedb5fc92 100644 --- a/srslte/lib/io/netsink.c +++ b/srslte/lib/io/netsink.c @@ -47,6 +47,12 @@ int srslte_netsink_init(srslte_netsink_t *q, char *address, int port, srslte_net return -1; } + int enable = 1; + if (setsockopt(q->sockfd, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(int)) < 0) + perror("setsockopt(SO_REUSEADDR) failed"); + if (setsockopt(q->sockfd, SOL_SOCKET, SO_REUSEPORT, &enable, sizeof(int)) < 0) + perror("setsockopt(SO_REUSEPORT) failed"); + q->servaddr.sin_family = AF_INET; q->servaddr.sin_addr.s_addr=inet_addr(address); q->servaddr.sin_port=htons(port); diff --git a/srslte/lib/io/netsource.c b/srslte/lib/io/netsource.c index 75e311812..f41296c3c 100644 --- a/srslte/lib/io/netsource.c +++ b/srslte/lib/io/netsource.c @@ -45,6 +45,14 @@ int srslte_netsource_init(srslte_netsource_t *q, char *address, int port, srslte perror("socket"); return -1; } + + // Make sockets reusable + int enable = 1; + if (setsockopt(q->sockfd, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(int)) < 0) + perror("setsockopt(SO_REUSEADDR) failed"); + if (setsockopt(q->sockfd, SOL_SOCKET, SO_REUSEPORT, &enable, sizeof(int)) < 0) + perror("setsockopt(SO_REUSEPORT) failed"); + q->type = type; q->servaddr.sin_family = AF_INET;