Some corrections.

FossilOrigin-Name: a3e4b7ae78de75925d43c5d92cf2bdd847fb45bfa48c6e4098c9101fd48fb6fa
This commit is contained in:
7u83@mail.ru 2015-04-08 18:08:12 +00:00
parent b08e39bf2b
commit fa7ed0e471
8 changed files with 31 additions and 17 deletions

View File

@ -32,7 +32,7 @@ SOCKOBJS=sock_create.o sock_copyaddr.o sock_strtoaddr.o sock_cmpaddr.o sock_addr
sock_addrinit.o \
sock_set_dontfrag.o \
sock_get_primary_if.o \
sock_receive.o \
#sock_receive.o \
LOGOBJS=cw_log.o \
cw_log_debug.o \
@ -54,6 +54,7 @@ UTILOBJS= \
cw_foreach_msgelem.o \
avltree.o \
avltree_get_node.o \
avltree_get.o \
avltree_del_all.o \
avltree_foreach_lr.o \
avltree_foreach_rl.o \
@ -91,7 +92,6 @@ LWAPPCISCOOBJS = \
CAPWAPOBJS= \
cwmsg_init.o \
cwmsg_init_echo_request.o \
cwmsg_addelem.o \
cwmsg_vaddelem.o \
@ -101,7 +101,6 @@ CAPWAPOBJS= \
cwmsg_addelem_cw_local_ip_addr.o \
cwmsg_addelem_mtu_discovery_padding.o \
cwmsg_addelem_ac_timestamp.o \
cw_addelem_vendor_specific_payload.o \
cwmsg_addelem_maximum_message_length.o \
cwmsg_addelem_image_identifier.o \
cwmsg_send.o \
@ -182,6 +181,7 @@ CAPWAPOBJS= \
format.o
# cw_addelem_vendor_specific_payload.o \
#cw_in_wtp_name.o \
#cw_msgtostr.o \
#cw_msgelemtostr.o \
@ -190,6 +190,7 @@ CAPWAPOBJS= \
#cwmsg_addelem_wtp_board_data.o \
#wtpinfo_readelem_wtp_board_data.o \
# cw_send_image_data_response.o \
#cwmsg_init.o \
#cw_ianavendoridtostr.o \
#cwmsg_addelem_result_code.o \

View File

@ -112,4 +112,12 @@
0,0
#define CW_ACTION_IN_CAPWAP_CONTROL_IPV4_ADDRESS \
CW_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
CW_ITEMTYPE_DATA, /* Type of element */ \
CW_ITEM_CAPWAP_CONTROL_IP_ADDR, /* ID to use store */ \
6, 6 /* min/max length */
#endif

View File

@ -30,7 +30,7 @@ cw_action_in_t capwap_actions_wtp_in[] = {
/* ------------------------------------------------------------------------------- */
/* Message Discovery Request */
/* Message Discovery Response */
{0, 0, CW_STATE_DISCOVERY, CW_MSG_DISCOVERY_RESPONSE, 0,
0, 0}
,
@ -44,7 +44,8 @@ cw_action_in_t capwap_actions_wtp_in[] = {
CW_ACTION_IN_VENDOR_SPECIFIC_PAYLOAD, 1}
,
/* Element CAPWAP Control IPv4 Address */
{0, 0, 0}

View File

@ -170,7 +170,7 @@ struct conn *conn_create_noq(int sock, struct sockaddr *addr);
extern int conn_send_cwmsg(struct conn *conn, struct cwmsg *cwmsg);
extern void conn_process_packet(struct conn *conn, uint8_t * packet, int len,
extern int conn_process_packet(struct conn *conn, uint8_t * packet, int len,
int (*cb) (void *, uint8_t *,int len), void *cbarg);
extern uint8_t *conn_get_message(struct conn *conn);

View File

@ -161,13 +161,13 @@ static void cw_dbg_packet(struct conn * conn, uint8_t * packet, int len)
#endif
void conn_process_packet(struct conn * conn, uint8_t *packet, int len,int (*cb)(void*,uint8_t *,int),void *cbarg)
int conn_process_packet(struct conn * conn, uint8_t *packet, int len,int (*cb)(void*,uint8_t *,int),void *cbarg)
{
if (len<8){
/* packet too short */
cw_dbg(DBG_CW_PKT_ERR,"Discarding packet from %s, packet too short, len=%d",sock_addr2str(&conn->addr),len);
return;
return 0;
}
int preamble = cw_get_hdr_preamble(packet);
@ -175,12 +175,12 @@ void conn_process_packet(struct conn * conn, uint8_t *packet, int len,int (*cb)(
if ( (preamble & 0xf0) != CW_VERSION){
/* wrong version */
cw_dbg(DBG_CW_PKT_ERR,"Discarding packet from %s, wrong version, version=%d",sock_addr2str(&conn->addr),(preamble&0xf0)>>8);
return;
return 0;
}
if (preamble & 0xf ) {
/* decode dtls */
return;
return 0;
}
/* log this packet */
@ -194,7 +194,7 @@ void conn_process_packet(struct conn * conn, uint8_t *packet, int len,int (*cb)(
if (payloadlen<0){
cw_dbg(DBG_CW_PKT_ERR,"Discarding packet from %s, header length greater than len, hlen=%d",sock_addr2str(&conn->addr),offs);
/* EINVAL */
return;
return 0;
}
/*
@ -211,7 +211,7 @@ void conn_process_packet(struct conn * conn, uint8_t *packet, int len,int (*cb)(
if (cw_get_hdr_rmac_len(packet)+8>offs){
/* wrong rmac size */
cw_dbg(DBG_CW_PKT_ERR,"Discarding packet, wrong R-MAC size, size=%d",*(packet+8));
return;
return 0;
}
// memcpy(cwrmsg.rmac, packet+8,8);
}
@ -224,7 +224,7 @@ void conn_process_packet(struct conn * conn, uint8_t *packet, int len,int (*cb)(
uint8_t * f;
f = fragman_add(conn->fragman, packet,offs,payloadlen);
if (f==NULL)
return;
return 0;
cw_dbg_packet(conn,f+4,*(uint32_t*)f);
@ -244,7 +244,7 @@ void conn_process_packet(struct conn * conn, uint8_t *packet, int len,int (*cb)(
process_message(conn,f+4,*(uint32_t*)f,cb,cbarg);
free (f);
return;
return 1;
}
//extern int cw_process_msg(struct conn * conn,uint8_t*msg,int len);
@ -258,7 +258,7 @@ void conn_process_packet(struct conn * conn, uint8_t *packet, int len,int (*cb)(
//msg_4*((val >> 19) & 0x1f);
process_message(conn,packet,len,cb,cbarg);
return;
return 1;
}
@ -277,7 +277,7 @@ int cw_read_messages(struct conn *conn)
if (n > 0)
conn_process_packet(conn, buf, n, cw_process_msg, conn);
}

View File

@ -1,6 +1,7 @@
#include "capwap.h"
#include "cw_log.h"
#include "sock.h" //Tube
/**
* @file
* @brief Implementation of Vendor Specific Payload
@ -19,6 +20,8 @@ int cw_in_vendor_specific_payload(struct conn *conn,struct cw_action_in * a,uint
af = cw_actionlist_in_get(conn->actions->in,&as);
cw_dbg(DBG_ELEM,"From might be: %s\n",sock_addr2str(&conn->addr));
if (!af) {
cw_log(DBG_ELEM,"Can't handle Vendor Specific Payload %s/%d, in msg %d (%s) in %s state.",
cw_strvendor(as.vendor_id),

View File

@ -20,4 +20,4 @@ export LDFLAGS
cmake ..
make uci cli
make install

View File

@ -57,6 +57,7 @@ static int run_discovery(struct conn *conn)
while (!cw_timer_timeout(timer)
&& conn->capwap_state == CW_STATE_DISCOVERY) {
cw_read_messages(conn);
printf ("Got one annswer\n");
}