Some corrections.
FossilOrigin-Name: a3e4b7ae78de75925d43c5d92cf2bdd847fb45bfa48c6e4098c9101fd48fb6fa
This commit is contained in:
		@ -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 \
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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,6 +44,7 @@ cw_action_in_t capwap_actions_wtp_in[] = {
 | 
			
		||||
	 CW_ACTION_IN_VENDOR_SPECIFIC_PAYLOAD, 1}
 | 
			
		||||
	,
 | 
			
		||||
 | 
			
		||||
	/* Element CAPWAP Control IPv4 Address */
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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),
 | 
			
		||||
 | 
			
		||||
@ -20,4 +20,4 @@ export LDFLAGS
 | 
			
		||||
 | 
			
		||||
cmake ..
 | 
			
		||||
make uci cli
 | 
			
		||||
 | 
			
		||||
make install
 | 
			
		||||
 | 
			
		||||
@ -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");
 | 
			
		||||
		
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user