2015-03-28 08:39:47 +01:00
|
|
|
/*
|
|
|
|
This file is part of libcapwap.
|
|
|
|
|
|
|
|
libcapwap is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
libcapwap 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 Foobar. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
2015-03-16 21:41:24 +01:00
|
|
|
/**
|
|
|
|
*@file
|
|
|
|
*@brief conn_send_request
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "capwap.h"
|
|
|
|
#include "cw_util.h"
|
2018-02-28 09:05:45 +01:00
|
|
|
#include "log.h"
|
2015-03-16 21:41:24 +01:00
|
|
|
|
|
|
|
/**
|
2015-03-28 08:39:47 +01:00
|
|
|
* Send a request message and wait for its response
|
2015-03-20 22:31:09 +01:00
|
|
|
* @param conn the connection
|
2015-03-28 08:39:47 +01:00
|
|
|
*
|
|
|
|
* The message has to be prepared and put to conn->req_msg
|
2015-03-20 22:31:09 +01:00
|
|
|
*
|
2015-03-16 21:41:24 +01:00
|
|
|
*/
|
2018-02-28 09:05:45 +01:00
|
|
|
|
|
|
|
|
|
|
|
/*
|
2015-03-16 21:41:24 +01:00
|
|
|
struct cwrmsg * conn_send_request(struct conn * conn)
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
|
|
|
|
struct cwrmsg * cwrmsg;
|
|
|
|
struct cwmsg * cwmsg = &conn->req_msg;
|
2015-03-20 22:31:09 +01:00
|
|
|
|
|
|
|
|
2015-03-16 21:41:24 +01:00
|
|
|
for (i=0; i<conn->max_retransmit; i++) {
|
|
|
|
|
|
|
|
time_t r_timer = cw_timer_start(conn->retransmit_interval);
|
|
|
|
if (i!=0)
|
2015-03-31 08:04:03 +02:00
|
|
|
cw_dbg(DBG_MSG_ERR,"Retransmitting message, type=%d,seq=%d",cwmsg->type,cwmsg->seqnum);
|
2015-03-16 21:41:24 +01:00
|
|
|
|
|
|
|
conn_send_cwmsg(conn,&conn->req_msg);
|
|
|
|
cwrmsg = conn_wait_for_message(conn,r_timer);
|
|
|
|
if (cwrmsg){
|
|
|
|
if (cwrmsg->type == conn->req_msg.type+1){
|
|
|
|
return cwrmsg;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
2015-03-31 08:04:03 +02:00
|
|
|
cw_dbg(DBG_MSG_ERR,"Max retransmit's reached, message type=%d,seq=%d",cwmsg->type,cwmsg->seqnum);
|
2015-03-16 21:41:24 +01:00
|
|
|
return 0;
|
|
|
|
}
|
2018-02-28 09:05:45 +01:00
|
|
|
*/
|