ccp: update to latest version of libccp, now requires waiting until ccp is running to open sending unix socket
parent
65fcdbadc4
commit
6f6ca166b6
|
@ -92,9 +92,9 @@ void setup_ccp_connection(mtcp_manager_t mtcp) {
|
|||
mtcp_thread_context_t ctx = mtcp->ctx;
|
||||
int cpu = ctx->cpu;
|
||||
//char cpu_str[2] = "";
|
||||
int send_sock, recv_sock;
|
||||
int recv_sock;
|
||||
int path_len;
|
||||
struct sockaddr_un local, remote;
|
||||
struct sockaddr_un local;
|
||||
|
||||
if ((recv_sock = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) {
|
||||
TRACE_ERROR("failed to create unix recv socket for ccp comm\n");
|
||||
|
@ -107,23 +107,11 @@ void setup_ccp_connection(mtcp_manager_t mtcp) {
|
|||
unlink(local.sun_path);
|
||||
path_len = strlen(local.sun_path) + sizeof(local.sun_family);
|
||||
if (bind(recv_sock, (struct sockaddr *)&local, path_len) == -1) {
|
||||
TRACE_ERROR("failed to bind to unix://%s%d\n", FROM_CCP_PREFIX, cpu);
|
||||
TRACE_ERROR("failed to bind to unix://%s%d because %s\n", FROM_CCP_PREFIX, cpu, strerror(errno));
|
||||
exit(-1);
|
||||
}
|
||||
mtcp->from_ccp = recv_sock;
|
||||
|
||||
if ((send_sock = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) {
|
||||
TRACE_ERROR("failed to create unix send socket for ccp comm\n");
|
||||
exit(-1);
|
||||
}
|
||||
remote.sun_family = AF_UNIX;
|
||||
strcpy(remote.sun_path, TO_CCP_PREFIX);//TODO:CCP
|
||||
path_len = strlen(remote.sun_path) + sizeof(remote.sun_family);
|
||||
if (connect(send_sock, (struct sockaddr *)&remote, path_len) == -1) {
|
||||
TRACE_ERROR("failed to connect to unix://%s\n", TO_CCP_PREFIX);
|
||||
exit(-1);
|
||||
}
|
||||
mtcp->to_ccp = send_sock;
|
||||
|
||||
struct ccp_datapath dp = {
|
||||
.set_cwnd = &_dp_set_cwnd,
|
||||
|
@ -143,6 +131,24 @@ void setup_ccp_connection(mtcp_manager_t mtcp) {
|
|||
|
||||
}
|
||||
|
||||
void setup_ccp_send_socket(mtcp_manager_t mtcp) {
|
||||
int send_sock;
|
||||
int path_len;
|
||||
struct sockaddr_un remote;
|
||||
if ((send_sock = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) {
|
||||
TRACE_ERROR("failed to create unix send socket for ccp comm\n");
|
||||
exit(-1);
|
||||
}
|
||||
remote.sun_family = AF_UNIX;
|
||||
strcpy(remote.sun_path, TO_CCP_PREFIX);//TODO:CCP
|
||||
path_len = strlen(remote.sun_path) + sizeof(remote.sun_family);
|
||||
if (connect(send_sock, (struct sockaddr *)&remote, path_len) == -1) {
|
||||
TRACE_ERROR("failed to connect to unix://%s because %s\n", TO_CCP_PREFIX, strerror(errno));
|
||||
exit(-1);
|
||||
}
|
||||
mtcp->to_ccp = send_sock;
|
||||
}
|
||||
|
||||
void destroy_ccp_connection(mtcp_manager_t mtcp) {
|
||||
ccp_free();
|
||||
close(mtcp->from_ccp);
|
||||
|
|
|
@ -1112,6 +1112,9 @@ CCPRecvLoopThread(void *arg) {
|
|||
}
|
||||
break;
|
||||
}
|
||||
if (!mtcp->to_ccp) {
|
||||
setup_ccp_send_socket(mtcp);
|
||||
}
|
||||
ccp_read_msg(recvBuf, bytes_recvd);
|
||||
} while(1);
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#define EVENT_ECN 4
|
||||
|
||||
void setup_ccp_connection(mtcp_manager_t mtcp);
|
||||
void setup_ccp_send_socket(mtcp_manager_t mtcp);
|
||||
void destroy_ccp_connection(mtcp_manager_t mtcp);
|
||||
void ccp_create(mtcp_manager_t mtcp, tcp_stream *stream);
|
||||
void ccp_cong_control(mtcp_manager_t mtcp, tcp_stream *stream, uint32_t ack, uint64_t bytes_delivered, uint64_t packets_delivered);
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 5f91d69f09c4eb4cd1c066f512cc3b24ef02a09b
|
||||
Subproject commit 68cce87ae82008371d101ff56df971d24ec6acdd
|
Loading…
Reference in New Issue