diff --git a/src/capwap/conn_prepare_image_data_request.c b/src/capwap/conn_prepare_image_data_request.c index b617c95c..cd545717 100644 --- a/src/capwap/conn_prepare_image_data_request.c +++ b/src/capwap/conn_prepare_image_data_request.c @@ -19,55 +19,38 @@ #include "capwap.h" #include "lwapp.h" +//#include "string.h" //tube -#include "string.h" //tube -/* -static void cwmsg_addelem_image_data(struct cwmsg *cwmsg, struct image_data *data) + +int conn_prepare_image_data_request(struct conn *conn, struct image_data *data, + struct image_identifier *id) { + struct cwmsg *cwmsg = &conn->req_msg; + cwmsg_init(cwmsg, conn->req_buffer, CWMSG_IMAGE_DATA_REQUEST, conn_get_next_seqnum(conn), + 0); -} -*/ - -int conn_prepare_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)); + if (!data) + return 0; - -//uint8_t buf[1024]; -//memset(buf,0xff,1024); - - - uint8_t type=3; -// uint16_t checksum=htons(1968); - -//uint8_t d[] = {0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; - uint16_t checksum = htons( lw_checksum(data->data,data->len)); -// checksum = htons(1968); - - cwmsg_vaddelem(cwmsg,CWMSGELEM_IMAGE_DATA, 3, - &type, 1, - &checksum,2, -// d, sizeof(d) - data->data, data->len -// buf,1024 - ); - - -/* cwmsg_addelem_image_identifier(cwmsg,890,(uint8_t*)"urf", 3); - cwmsg_vaddelem(cwmsg,CWMSGELEM_IMAGE_DATA, 2, - &data->type, sizeof(data->type), - data->data, data->len - ); -*/ + /* for Cisco APs send image data in "LWAPP format" */ + if (conn->capwap_mode == CWMODE_CISCO) { + uint8_t type = 3; + uint16_t checksum = htons(lw_checksum(data->data, data->len)); + cwmsg_vaddelem(cwmsg, CWMSGELEM_IMAGE_DATA, 3, + &type, 1, &checksum, 2, data->data, data->len); + return 0; } -// return conn_send_cwmsg(conn,cwmsg); + + + /* standard capwap operation */ + + cwmsg_vaddelem(cwmsg,CWMSGELEM_IMAGE_DATA, 2, + &data->type, sizeof(data->type), + data->data, data->len + ); + + return 0; } -