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_addrinit.o \
sock_set_dontfrag.o \ sock_set_dontfrag.o \
sock_get_primary_if.o \ sock_get_primary_if.o \
sock_receive.o \ #sock_receive.o \
LOGOBJS=cw_log.o \ LOGOBJS=cw_log.o \
cw_log_debug.o \ cw_log_debug.o \
@ -54,6 +54,7 @@ UTILOBJS= \
cw_foreach_msgelem.o \ cw_foreach_msgelem.o \
avltree.o \ avltree.o \
avltree_get_node.o \ avltree_get_node.o \
avltree_get.o \
avltree_del_all.o \ avltree_del_all.o \
avltree_foreach_lr.o \ avltree_foreach_lr.o \
avltree_foreach_rl.o \ avltree_foreach_rl.o \
@ -91,7 +92,6 @@ LWAPPCISCOOBJS = \
CAPWAPOBJS= \ CAPWAPOBJS= \
cwmsg_init.o \
cwmsg_init_echo_request.o \ cwmsg_init_echo_request.o \
cwmsg_addelem.o \ cwmsg_addelem.o \
cwmsg_vaddelem.o \ cwmsg_vaddelem.o \
@ -101,7 +101,6 @@ CAPWAPOBJS= \
cwmsg_addelem_cw_local_ip_addr.o \ cwmsg_addelem_cw_local_ip_addr.o \
cwmsg_addelem_mtu_discovery_padding.o \ cwmsg_addelem_mtu_discovery_padding.o \
cwmsg_addelem_ac_timestamp.o \ cwmsg_addelem_ac_timestamp.o \
cw_addelem_vendor_specific_payload.o \
cwmsg_addelem_maximum_message_length.o \ cwmsg_addelem_maximum_message_length.o \
cwmsg_addelem_image_identifier.o \ cwmsg_addelem_image_identifier.o \
cwmsg_send.o \ cwmsg_send.o \
@ -182,6 +181,7 @@ CAPWAPOBJS= \
format.o format.o
# cw_addelem_vendor_specific_payload.o \
#cw_in_wtp_name.o \ #cw_in_wtp_name.o \
#cw_msgtostr.o \ #cw_msgtostr.o \
#cw_msgelemtostr.o \ #cw_msgelemtostr.o \
@ -190,6 +190,7 @@ CAPWAPOBJS= \
#cwmsg_addelem_wtp_board_data.o \ #cwmsg_addelem_wtp_board_data.o \
#wtpinfo_readelem_wtp_board_data.o \ #wtpinfo_readelem_wtp_board_data.o \
# cw_send_image_data_response.o \ # cw_send_image_data_response.o \
#cwmsg_init.o \
#cw_ianavendoridtostr.o \ #cw_ianavendoridtostr.o \
#cwmsg_addelem_result_code.o \ #cwmsg_addelem_result_code.o \

View File

@ -112,4 +112,12 @@
0,0 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 #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, CW_STATE_DISCOVERY, CW_MSG_DISCOVERY_RESPONSE, 0,
0, 0} 0, 0}
, ,
@ -44,7 +44,8 @@ cw_action_in_t capwap_actions_wtp_in[] = {
CW_ACTION_IN_VENDOR_SPECIFIC_PAYLOAD, 1} CW_ACTION_IN_VENDOR_SPECIFIC_PAYLOAD, 1}
, ,
/* Element CAPWAP Control IPv4 Address */
{0, 0, 0} {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 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); int (*cb) (void *, uint8_t *,int len), void *cbarg);
extern uint8_t *conn_get_message(struct conn *conn); 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 #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){ if (len<8){
/* packet too short */ /* packet too short */
cw_dbg(DBG_CW_PKT_ERR,"Discarding packet from %s, packet too short, len=%d",sock_addr2str(&conn->addr),len); 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); 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){ if ( (preamble & 0xf0) != CW_VERSION){
/* wrong version */ /* wrong version */
cw_dbg(DBG_CW_PKT_ERR,"Discarding packet from %s, wrong version, version=%d",sock_addr2str(&conn->addr),(preamble&0xf0)>>8); 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 ) { if (preamble & 0xf ) {
/* decode dtls */ /* decode dtls */
return; return 0;
} }
/* log this packet */ /* log this packet */
@ -194,7 +194,7 @@ void conn_process_packet(struct conn * conn, uint8_t *packet, int len,int (*cb)(
if (payloadlen<0){ 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); cw_dbg(DBG_CW_PKT_ERR,"Discarding packet from %s, header length greater than len, hlen=%d",sock_addr2str(&conn->addr),offs);
/* EINVAL */ /* 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){ if (cw_get_hdr_rmac_len(packet)+8>offs){
/* wrong rmac size */ /* wrong rmac size */
cw_dbg(DBG_CW_PKT_ERR,"Discarding packet, wrong R-MAC size, size=%d",*(packet+8)); 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); // 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; uint8_t * f;
f = fragman_add(conn->fragman, packet,offs,payloadlen); f = fragman_add(conn->fragman, packet,offs,payloadlen);
if (f==NULL) if (f==NULL)
return; return 0;
cw_dbg_packet(conn,f+4,*(uint32_t*)f); 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); process_message(conn,f+4,*(uint32_t*)f,cb,cbarg);
free (f); free (f);
return; return 1;
} }
//extern int cw_process_msg(struct conn * conn,uint8_t*msg,int len); //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); //msg_4*((val >> 19) & 0x1f);
process_message(conn,packet,len,cb,cbarg); process_message(conn,packet,len,cb,cbarg);
return; return 1;
} }
@ -277,7 +277,7 @@ int cw_read_messages(struct conn *conn)
if (n > 0) if (n > 0)
conn_process_packet(conn, buf, n, cw_process_msg, conn); conn_process_packet(conn, buf, n, cw_process_msg, conn);
} }

View File

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

View File

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

View File

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