-shared_LIBRARIES = fwp
+lib_LIBRARIES = fwp
CFLAGS += -D_FWP_INTERNALS_
SUBDIRS = core
#LDFLAGS = -lpthread -lrt
#include_HEADERS= fwp_vres.h fwp_msgb.h fwp_msgq.h \
fwp_conf.h fwp_util.h fwp_endpoint.h fwp.h
-lib_LOADLIBES+= pthread ulut fna
-#lib_LOADLIBES+= pthread rt
+lib_LOADLIBES+= pthread rt ulut fna
else
fwp_epoint->attr = fwp_epoint_attr_default;
- addr = (struct sockaddr_in *)&(fwp_epoint->peer.addr);
+ addr = (struct sockaddr_in *) &(fwp_epoint->peer.addr);
addr->sin_family = AF_INET;
/* TODO: set listen interface, maybe through config struct*/
addr->sin_addr.s_addr = INADDR_ANY;
goto err;
}
- listen(fwp_epoint->sockd, fwp_epoint->attr.max_connections);
+ if (listen(fwp_epoint->sockd, fwp_epoint->attr.max_connections)){
+ perror("Error on listen call\n");
+ goto err;
+ }
FD_ZERO(&fwp_epoint->fdset);
/*add listen socket */
bzero(fwp_epoint->c_sockd, fwp_epoint->attr.max_connections);
fwp_epoint->nr_connections = 0;
- FWP_DEBUG("Receive endpoint\n");
-
+ FWP_DEBUG("Reliable receive endpoint port=%d created.\n",
+ fwp_epoint->port);
} else {
if ((fwp_epoint->sockd = socket(PF_INET, SOCK_DGRAM,
IPPROTO_UDP)) < 0) {
FWP_ERROR("Bind error: %s", strerror(errno));
goto err;
}
+ FWP_DEBUG("Best-Effort receive endpoint port=%d created.\n",
+ fwp_epoint->port);
}
/*if (setsockopt(epoint->sockd, SOL_SOCKET, SO_RCVBUF,
getsockname(fwp_epoint->sockd, (struct sockaddr*)&fwp_epoint->peer.addr,
&fwp_epoint->peer.addrlen);
- FWP_DEBUG("Receive endpoint port=%d created.\n", fwp_epoint->port);
*epoint = fwp_epoint;
return 0;
err:
fwp_endpoint_destroy(fwp_epoint);
- return -1;
+ return errno;
}
/**
return 0;
}
-int fwp_receive_endpoint_accept(fwp_endpoint_d_t epointd)
+static int fwp_receive_endpoint_accept(fwp_endpoint_t *fwp_epoint)
{
int csockd;
- fwp_endpoint_t *fwp_epoint = epointd;
+// fwp_endpoint_t *fwp_epoint = epointd;
fwp_sockaddr_t peer;
int i;
if (fwp_epoint->nr_connections == fwp_epoint->attr.max_connections)
return -1;
+ peer.addrlen = sizeof(struct sockaddr_in);
csockd = accept(fwp_epoint->sockd, (struct sockaddr*)peer.addr,
&peer.addrlen);
-
+
+ if (csockd < 0) {
+ perror("Error on accept\n");
+ return errno;
+ }
+
FWP_DEBUG("New connection accepted\n");
/* find free place */
i = 0;
FWP_DEBUG("Index = %d\n", i);
fwp_epoint->nr_connections++;
+ FWP_DEBUG("before\n");
FD_SET(csockd, &fwp_epoint->fdset);
+ FWP_DEBUG("SET fdset\n");
return 0;
}
continue;
}
+ peer->addrlen = sizeof(struct sockaddr_in);
len = _fwp_recvfrom(fwp_epoint->c_sockd[i], buffer,
buffer_size,0, peer);
}
if (FD_ISSET(fwp_epoint->sockd, &fdset)) { /* is it listen socket? */
- fwp_receive_endpoint_accept(endpoint);
+ fwp_receive_endpoint_accept(fwp_epoint);
+ FWP_DEBUG("After accepted\n");
continue;
}
-SUBDIRS= fwp_msgtest fwp_vrestest
+SUBDIRS= fwp_msgtest fwp_vrestest fwp_prototest
#fwp_prototest fwp_mngrtest
#SUBDIRS= fwp_msgtest fwp_vrestest fwp_prototest fwp_mngrtest
#fwp_mngrtest unixsocktest
test_PROGRAMS = fwp_msgtest
CFLAGS+= -D_FWP_INTERNALS_
fwp_msgtest_SOURCES+= fwp_msgtest.c
-lib_LOADLIBES += fwp pthread
+lib_LOADLIBES += pthread rt fwp
char buffer[30];
fwp_endpoint_d_t sepoint_d1, sepoint_d2, repoint_d1, repoint_d2;
fwp_endpoint_attr_t attr;
+ fwp_addr_t from;
fwp_endpoint_attr_init(&attr);
fwp_send(sepoint_d1, msg2, sizeof(msg2), 0);
for (i = 0; i < 2; i++) {
- if ((len = fwp_recv(repoint_d1, buffer, sizeof(buffer), 0)) < 0) {
+ if ((len = fwp_recv(repoint_d1, buffer, sizeof(buffer), &from,
+ 0)) < 0) {
perror("Error while receiving data");
return -1;
}
fwp_endpoint_d_t repoint_d1;
int i,len;
char buffer[30];
+ fwp_addr_t from;
FWP_DEBUG("Creating receive endpoint\n");
if (fwp_receive_endpoint_create(7777, &attr,&repoint_d1) < 0){
FWP_DEBUG("Receive endpoint created \n");
for (i = 0; i < 3; i++) {
- if ((len = fwp_recv(repoint_d1, buffer, sizeof(buffer), 0)) < 0) {
+ if ((len = fwp_recv(repoint_d1, buffer, sizeof(buffer), &from,
+ 0)) < 0) {
perror("Error while receiving data::");
return NULL;
} else {
char msg1[] = "Hello1";
char msg2[] = "Hello2";
fwp_endpoint_d_t sepoint_d1;
- pthread_t id;
+ pthread_t thread;
vparam1.ac_id = FWP_AC_VO;
vparam1.budget = 100;
fwp_endpoint_attr_init(&attr);
fwp_endpoint_attr_setreliability(&attr, FWP_EPOINT_RELIABLE);
- pthread_create(&id, NULL, &receiver, (void*) NULL);
+ pthread_create(&thread, NULL, &receiver, (void*) NULL);
printf("Create vres1, vres2\n");
if (fwp_vres_create(&vparam1, &vres_d1) < 0) {
printf("Unable to create vres1\n");
FWP_DEBUG("Sent msg1\n");
fwp_send(sepoint_d1, msg2, sizeof(msg2), 0);
FWP_DEBUG("Sent msg2\n");
-
+
+ pthread_join(thread, (void**) NULL);
/*if (fwp_vres_destroy(vres_d1) < 0) {
perror("Unable to destroy vres1\n");
return -1;
CFLAGS+= -D_FWP_INTERNALS_
fwp_vrestest1_SOURCES+= fwp_vrestest1.c
fwp_vrestest2_SOURCES+= fwp_vrestest2.c
-lib_LOADLIBES += fwp pthread rt ulut
+lib_LOADLIBES += fwp pthread rt ulut
fwp_endpoint_d_t sepoint_d1, repoint_d;
int count;
struct timespec sendtime;
- fwp_endpoint_attr_t attr ;
+ fwp_endpoint_attr_t attr;
unsigned int from;
fwp_endpoint_attr_init(&attr);
+
vparam1.ac_id = FWP_AC_VO;
vparam1.budget = 100;
vparam1.period_usec = 2111111;