+/**************************************************************************/
+/* ---------------------------------------------------------------------- */
+/* Copyright (C) 2006 - 2008 FRESCOR consortium partners: */
+/* */
+/* Universidad de Cantabria, SPAIN */
+/* University of York, UK */
+/* Scuola Superiore Sant'Anna, ITALY */
+/* Kaiserslautern University, GERMANY */
+/* Univ. Politécnica Valencia, SPAIN */
+/* Czech Technical University in Prague, CZECH REPUBLIC */
+/* ENEA SWEDEN */
+/* Thales Communication S.A. FRANCE */
+/* Visual Tools S.A. SPAIN */
+/* Rapita Systems Ltd UK */
+/* Evidence ITALY */
+/* */
+/* See http://www.frescor.org for a link to partners' websites */
+/* */
+/* FRESCOR project (FP6/2005/IST/5-034026) is funded */
+/* in part by the European Union Sixth Framework Programme */
+/* The European Union is not liable of any use that may be */
+/* made of this code. */
+/* */
+/* */
+/* This file is part of FWP (Frescor WLAN Protocol) */
+/* */
+/* FWP is free software; you can redistribute it and/or modify it */
+/* under terms of the GNU General Public License as published by the */
+/* Free Software Foundation; either version 2, or (at your option) any */
+/* later version. FWP is distributed in the hope that it will be */
+/* useful, but WITHOUT ANY WARRANTY; without even the implied warranty */
+/* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU */
+/* General Public License for more details. You should have received a */
+/* copy of the GNU General Public License along with FWP; see file */
+/* COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, */
+/* Cambridge, MA 02139, USA. */
+/* */
+/* As a special exception, including FWP header files in a file, */
+/* instantiating FWP generics or templates, or linking other files */
+/* with FWP objects to produce an executable application, does not */
+/* by itself cause the resulting executable application to be covered */
+/* by the GNU General Public License. This exception does not */
+/* however invalidate any other reasons why the executable file might be */
+/* covered by the GNU Public License. */
+/**************************************************************************/
#include <fna.h>
#include <fres_vres.h>
#include <frsh_forb.h>
#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)
{
if ((rv = fwp_init()))
return rv;
- return frs_fwp_init(frsh_forb_global.orb, frsh_forb_global.fcb,
- &frsh_forb_global.sch_executor);
+ return fra_fwp_init();
}
int fwp_fna_network_budget_to_bytes(const frsh_resource_id_t resource_id,
const frsh_rel_time_t *budget, size_t *nbytes)
{
- *nbytes = budget->tv_sec;
+ *nbytes = budget->tv_nsec;
return 0;
}
int fwp_fna_network_bytes_to_budget(const frsh_resource_id_t resource_id,
const size_t nbytes, frsh_rel_time_t *budget)
{
- budget->tv_sec = nbytes;
+ budget->tv_nsec = nbytes;
+ budget->tv_sec = 0;
return 0;
}
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);
- if (rv)
- return rv;
endpoint->protocol_info.body = fwp_epoint;
- return 0;
+ return rv;
}
int fwp_fna_receive_endpoint_created(fna_endpoint_data_t *endpoint)
endpoint->protocol_info.body = fwp_epoint;
fwp_endpoint_get_params(fwp_epoint, &node, &port, attr);
endpoint->stream_id = port;
+ FWP_DEBUG("PORT= %d\n", port);
return 0;
}
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;
}