#include "fwp_vres.h"
#include "fwp.h"
#include "fwp_res.h"
+#include "fwp_utils.h"
+#include "fwp_debug.h"
int fwp_fna_init(const frsh_resource_id_t resource_id)
{
fwp_endpoint_attr_t *attr;
fwp_endpoint_t *fwp_epoint;
int rv;
-
+ frsh_send_endpoint_protocol_info_t *spi;
+
node = (unsigned int) endpoint->destination;
port = (unsigned int) endpoint->stream_id;
- attr = (fwp_endpoint_attr_t*) endpoint->endpoint_protocol_info.send.body;
+ attr = NULL;
+
+ spi = &endpoint->endpoint_protocol_info.send;
+ if (spi->size == sizeof(fwp_endpoint_attr_t))
+ attr = (fwp_endpoint_attr_t*)spi->body;
rv = fwp_send_endpoint_create(node, port, attr, &fwp_epoint);
endpoint->protocol_info.body = fwp_epoint;
return rv;
const size_t size)
{
fwp_endpoint_t *fwp_epoint;
- int flags = 0;
fwp_epoint = endpoint->protocol_info.body;
- return fwp_send(fwp_epoint, msg, size, flags);
+ return fwp_send(fwp_epoint, msg, size);
}
int fwp_fna_send_sync(const fna_endpoint_data_t *endpoint, const void *msg,
const size_t size)
{
fwp_endpoint_t *fwp_epoint;
- int flags = 0;
fwp_epoint = endpoint->protocol_info.body;
- return fwp_send(fwp_epoint, msg, size, flags);
+ return fwp_send(fwp_epoint, msg, size);
}
int fwp_fna_send_async(const fna_endpoint_data_t *endpoint,const void *msg,
{
fwp_endpoint_t *fwp_epoint;
- fwp_epoint = (fwp_endpoint_t*) endpoint->protocol_info.body;
- return fwp_send(fwp_epoint, msg, size, MSG_DONTWAIT);
+ fwp_epoint = (fwp_endpoint_t*) endpoint->protocol_info.body;
+ return fwp_send(fwp_epoint, msg, size); /* FIXME */
}
/** FNA receive routines */
size_t *received_bytes, frsh_network_address_t *from)
{
unsigned int from_addr;
- size_t len;
+ ssize_t len;
fwp_endpoint_t *fwp_epoint;
int flags = 0;
frsh_network_address_t *from)
{
unsigned int from_addr;
- size_t len;
+ ssize_t len;
fwp_endpoint_t *fwp_epoint;
int flags = 0;
len = fwp_recv(fwp_epoint, buffer, buffer_size, &from_addr, flags);
if (len < 0)
return len;
-
- *received_bytes = len;
- *from = from_addr;
+
+ if (received_bytes)
+ *received_bytes = len;
+ if (from)
+ *from = from_addr;
return 0;
}
frsh_network_address_t *from)
{
unsigned int from_addr;
- size_t len;
+ ssize_t len;
fwp_endpoint_t *fwp_epoint;
int flags = 0;
len = fwp_recv(fwp_epoint, buffer, buffer_size, &from_addr, flags);
if (len < 0)
return len;
-
- *received_bytes = len;
- *from = from_addr;
+
+ if (received_bytes)
+ *received_bytes = len;
+ if (from)
+ *from = from_addr;
return 0;
}