From de831efd9c57e05ab762c31cb23eea4c2da22ef6 Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Sun, 17 Aug 2014 16:32:13 +0000 Subject: [PATCH] Initial commit FossilOrigin-Name: 1b0b90ca3d344f4326678e2504e20b03cfb155c63bc4edf6f55c52a601cb3ffe --- src/capwap/conn_get_response.c | 58 +++++++++++++++++++++ src/capwap/cwmsg_addelem_image_identifier.c | 15 ++++++ src/capwap/cwsend_image_data_request.c | 43 +++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 src/capwap/conn_get_response.c create mode 100644 src/capwap/cwmsg_addelem_image_identifier.c create mode 100644 src/capwap/cwsend_image_data_request.c diff --git a/src/capwap/conn_get_response.c b/src/capwap/conn_get_response.c new file mode 100644 index 00000000..24d62727 --- /dev/null +++ b/src/capwap/conn_get_response.c @@ -0,0 +1,58 @@ + +#include "capwap.h" +#include "cw_log.h" +#include "sock.h" +#include "cw_util.h" + +#include + +struct cwrmsg * conn_get_response(struct conn * conn) +{ + + printf("Starting timer 120\n"); + time_t timer = cw_timer_start(160); + + struct cwmsg * cwmsg = &conn->req_msg; + + int type = cwmsg->type+1; + + + printf ("Awaiting response message for type=%d\n",type); + + + + struct cwrmsg * cwrmsg; + + time_t rpt_timer = cw_timer_start(5); + do { + cwrmsg = conn_get_message(conn); + + + if (cwrmsg){ + cw_dbg(DBG_CW_MSG,"Received message from %s, type=%d - %s" + ,sock_addr2str(&conn->addr),cwrmsg->type,cw_msgtostr(cwrmsg->type)); + if (cwrmsg->type == type){ + printf("Jea!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11\n"); + return cwrmsg; + } + + } + + if (cw_timer_timeout(rpt_timer)){ + rpt_timer = cw_timer_start(5); + printf("Retransmitting request\n"); + conn_send_cwmsg(conn,&conn->req_msg); + } + + + + if (conn->dtls_error) + return 0; + + }while(!cw_timer_timeout(timer)); + + printf("Timeout!!!!!\n"); + + return 0; + +} diff --git a/src/capwap/cwmsg_addelem_image_identifier.c b/src/capwap/cwmsg_addelem_image_identifier.c new file mode 100644 index 00000000..b2da43e8 --- /dev/null +++ b/src/capwap/cwmsg_addelem_image_identifier.c @@ -0,0 +1,15 @@ + +#include "capwap.h" +#include "cwmsg.h" + +#include //tube + +void cwmsg_addelem_image_identifier(struct cwmsg *cwmsg,uint32_t vendor_id,uint8_t *img, int len) +{ +// uint32_t net_vendor_id = htonl(vendor_id); +// cwmsg_vaddelem(cwmsg,CWMSGELEM_IMAGE_IDENTIFIER,2,&net_vendor_id,sizeof(net_vendor_id),img,len); + + uint8_t name[]="/tobias_heere\0"; + cwmsg_addelem(cwmsg,CWMSGELEM_IMAGE_IDENTIFIER,name,strlen((char*)name)+1); +} + diff --git a/src/capwap/cwsend_image_data_request.c b/src/capwap/cwsend_image_data_request.c new file mode 100644 index 00000000..71b6c8c5 --- /dev/null +++ b/src/capwap/cwsend_image_data_request.c @@ -0,0 +1,43 @@ +/* + 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 . + +*/ + +#include "capwap.h" + +void cwmsg_addelem_image_data(struct cwmsg *cwmsg, struct image_data *data) +{ + +} + +int cwsend_image_data_request(struct conn * conn, struct image_data * data, struct image_identifier *id ) +{ +// uint8_t buffer[CWMSG_MAX_SIZE]; + struct cwmsg * cwmsg = &conn->req_msg; + cwmsg_init(cwmsg,conn->req_buffer,CWMSG_IMAGE_DATA_REQUEST,conn_get_next_seqnum(conn),0); + + if (data){ +// cwmsg_addelem(&cwmsg,CWMSGELEM_IMAGE_DATA,(uint8_t*)&data->type,sizeof(data->type)); + + cwmsg_vaddelem(cwmsg,CWMSGELEM_IMAGE_DATA, 2, + &data->type, sizeof(data->type), + data->data, data->len + ); + + } + return conn_send_cwmsg(conn,cwmsg); +} +