Sanitize link_manager interface, correct in FlexRAN/PROTO_AGENT

This commit cleans up the link_manager interface:
* don't provide peer_addr/port in create_link_manager() (for TCP/SCTP it is not
  needed, so in the UDP case in needs to be set explicitly)
* Make FlexRAN connect again (correct hardcoded address)
* Fix FlexRAN: retain the manager pointer
* Fix FlexRAN: store receive_queue pointer
* the link_manager's sender thread passes the correct peer_addr/port for the
  UDP case
This commit is contained in:
Robert Schmidt
2018-11-07 10:48:36 +01:00
parent 34adfd2af8
commit 0efde02161
6 changed files with 17 additions and 41 deletions
+2 -8
View File
@@ -47,7 +47,7 @@ static void *link_manager_sender_thread(void *_manager)
while (manager->run) {
while (message_get(manager->send_queue, &data, &size, &priority) == 0) {
link_send_packet(manager->socket_link, data, size, manager->peer_addr, manager->port);
link_send_packet(manager->socket_link, data, size, manager->peer_addr, manager->peer_port);
free(data);
}
// if (message_get(manager->send_queue, &data, &size, &priority))
@@ -95,10 +95,7 @@ error:
link_manager_t *create_link_manager(
message_queue_t *send_queue,
message_queue_t *receive_queue,
socket_link_t *link,
uint16_t type,
const char *peer_addr,
int port )
socket_link_t *link)
{
link_manager_t *ret = NULL;
pthread_attr_t attr;
@@ -113,9 +110,6 @@ link_manager_t *create_link_manager(
ret->send_queue = send_queue;
ret->receive_queue = receive_queue;
ret->socket_link = link;
ret->type = type;
ret->peer_addr = peer_addr;
ret->port = port;
ret->run = 1;
if (pthread_attr_init(&attr))
+3 -7
View File
@@ -45,9 +45,8 @@ typedef struct {
message_queue_t *send_queue;
message_queue_t *receive_queue;
socket_link_t *socket_link;
uint16_t type;
const char *peer_addr;
int port;
const char *peer_addr; /* for UDP server remote IP */
int peer_port; /* for UDP server remote address */
pthread_t sender;
pthread_t receiver;
volatile int run;
@@ -56,10 +55,7 @@ typedef struct {
link_manager_t *create_link_manager(
message_queue_t *send_queue,
message_queue_t *receive_queue,
socket_link_t *link,
uint16_t type,
const char *peer_addr,
int port);
socket_link_t *link);
void destroy_link_manager(link_manager_t *);
-2
View File
@@ -205,7 +205,6 @@ socket_link_t *new_link_udp_server(const char *bind_addr, int bind_port)
goto error;
}
ret->socket_fd = socket_server;
ret->peer_port = 0;
return ret;
error:
@@ -251,7 +250,6 @@ socket_link_t *new_link_udp_client(const char *server, int port){
getsockname(s, (struct sockaddr *)&si_other, &slen);
ret->socket_fd = s;
ret->peer_port = port; //ntohs(si_other.sin_port);
return ret;
error: