Some code re-organisation.
FossilOrigin-Name: 22587c59c55ef6ceff826dd8056ed18f39a223e6d722664b4205e045daaf4903
This commit is contained in:
		| @ -20,13 +20,13 @@ Length: 16 | |||||||
|  |  | ||||||
| 207. Cisco Board Data Options | 207. Cisco Board Data Options | ||||||
|  |  | ||||||
|   The Cisco Board Data element is present in Discover Request and  |   The Cisco Board Data element is present in Discovery Request and  | ||||||
|   Join Request messages sent by the WTP. |   Join Request messages sent by the WTP. | ||||||
|  |  | ||||||
|     0                   1                   2                   3 |     0                   1                   2                   3 | ||||||
|     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 |     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||||
|    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||||
|    | ANT Type      | Rserved       | AP Type       | Join Priority | |    | ANT Type      | Reserved      | AP Type       | Join Priority | | ||||||
|    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  | ||||||
|  |  | ||||||
| Type: 207  | Type: 207  | ||||||
|  | |||||||
| @ -59,7 +59,7 @@ | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #define CONF_DEFAULT_CISCO_HARDWARE_VERSION ".x01000001" | #define CONF_DEFAULT_CISCO_HARDWARE_VERSION ".x01000001" | ||||||
| #define CONF_DEFAULT_CISCO_SOFTWARE_VERSION ".x08006E00" | #define CONF_DEFAULT_CISCO_SOFTWARE_VERSION ".x06006E00" | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifndef CONF_DEFAULT_CONTROL_PORT | #ifndef CONF_DEFAULT_CONTROL_PORT | ||||||
|  | |||||||
| @ -37,7 +37,7 @@ | |||||||
| /* macro to convert our client ip to a string */ | /* macro to convert our client ip to a string */ | ||||||
| #define CLIENT_IP (sock_addrtostr((struct sockaddr*)&wtpman->conn->addr, (char[64]){0},64)) | #define CLIENT_IP (sock_addrtostr((struct sockaddr*)&wtpman->conn->addr, (char[64]){0},64)) | ||||||
|  |  | ||||||
|  | /* | ||||||
| int conn_handle_echo_request(void * d) | int conn_handle_echo_request(void * d) | ||||||
| { | { | ||||||
| 	struct conn * conn = (struct conn *)d; | 	struct conn * conn = (struct conn *)d; | ||||||
| @ -45,6 +45,7 @@ int conn_handle_echo_request(void * d) | |||||||
| 	cwsend_echo_response(conn,cwrmsg->seqnum,0); | 	cwsend_echo_response(conn,cwrmsg->seqnum,0); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  | */ | ||||||
|  |  | ||||||
|  |  | ||||||
| void conn_handle_change_state_event_request(struct conn * conn) | void conn_handle_change_state_event_request(struct conn * conn) | ||||||
| @ -52,7 +53,7 @@ void conn_handle_change_state_event_request(struct conn * conn) | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| static struct cwrmsg * conn_wait_for_message(struct conn * conn, time_t timer) | static struct cwrmsg * xconn_wait_for_message(struct conn * conn, time_t timer) | ||||||
| { | { | ||||||
| 	struct cwrmsg * cwrmsg; | 	struct cwrmsg * cwrmsg; | ||||||
|  |  | ||||||
| @ -158,7 +159,7 @@ static struct cwrmsg * conn_wait_for_request(struct conn * conn, int *msglist, t | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| struct cwrmsg * conn_send_request(struct conn * conn) | struct cwrmsg * xconn_send_request(struct conn * conn) | ||||||
| { | { | ||||||
| 	int i; | 	int i; | ||||||
|  |  | ||||||
| @ -201,7 +202,7 @@ int wtpman_handle_request(void *p) | |||||||
| 	struct cwrmsg * cwrmsg = &conn->cwrmsg; | 	struct cwrmsg * cwrmsg = &conn->cwrmsg; | ||||||
| 	switch(conn->cwrmsg.type){ | 	switch(conn->cwrmsg.type){ | ||||||
| 		case CWMSG_ECHO_REQUEST: | 		case CWMSG_ECHO_REQUEST: | ||||||
| 			conn_handle_echo_request(conn); | 			cw_handle_echo_request(conn); | ||||||
| 			break; | 			break; | ||||||
| 		case CWMSG_CHANGE_STATE_EVENT_REQUEST: | 		case CWMSG_CHANGE_STATE_EVENT_REQUEST: | ||||||
| 			cwread_change_state_event_request(&wtpman->wtpinfo,cwrmsg->msgelems,cwrmsg->msgelems_len); | 			cwread_change_state_event_request(&wtpman->wtpinfo,cwrmsg->msgelems,cwrmsg->msgelems_len); | ||||||
| @ -237,7 +238,7 @@ void send_image_file(struct conn * conn,const char * filename) | |||||||
| 	data.data = buffer; | 	data.data = buffer; | ||||||
|  |  | ||||||
|  |  | ||||||
| 	conn->request_handler = conn_handle_echo_request; | 	conn->request_handler = cw_handle_echo_request; | ||||||
| 	conn->request_handler_param = conn; | 	conn->request_handler_param = conn; | ||||||
|  |  | ||||||
| int bl=0; | int bl=0; | ||||||
| @ -616,7 +617,6 @@ static void wtpman_run(void *arg) | |||||||
|  |  | ||||||
| 	int cfg_status_msgs[] = { CWMSG_IMAGE_DATA_REQUEST, CWMSG_CONFIGURATION_STATUS_REQUEST, -1 }; | 	int cfg_status_msgs[] = { CWMSG_IMAGE_DATA_REQUEST, CWMSG_CONFIGURATION_STATUS_REQUEST, -1 }; | ||||||
| 	cwrmsg =  conn_wait_for_request(wtpman->conn, cfg_status_msgs, timer); | 	cwrmsg =  conn_wait_for_request(wtpman->conn, cfg_status_msgs, timer); | ||||||
| printf("Have a message (con status req)\n"); |  | ||||||
|  |  | ||||||
| 	if (!cwrmsg){ | 	if (!cwrmsg){ | ||||||
| 		cw_dbg(DBG_CW_MSG_ERR,"No config uration status request from %s after %d seconds, WTP died.", | 		cw_dbg(DBG_CW_MSG_ERR,"No config uration status request from %s after %d seconds, WTP died.", | ||||||
| @ -624,7 +624,7 @@ printf("Have a message (con status req)\n"); | |||||||
| 		wtpman_remove(wtpman);	 | 		wtpman_remove(wtpman);	 | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
| printf("Con Stat Req waitr\n"); | printf("Have Masseg %d\n",cwrmsg->type); | ||||||
| 	cwread_configuration_status_request(&wtpman->wtpinfo,cwrmsg->msgelems, cwrmsg->msgelems_len); | 	cwread_configuration_status_request(&wtpman->wtpinfo,cwrmsg->msgelems, cwrmsg->msgelems_len); | ||||||
| 	int result_code=0; | 	int result_code=0; | ||||||
| 	struct ac_info *acinfo = get_acinfo(); | 	struct ac_info *acinfo = get_acinfo(); | ||||||
| @ -634,7 +634,7 @@ printf("Send the respi but sleep\n"); | |||||||
|  |  | ||||||
| 	 | 	 | ||||||
| printf("Next thoing\n"); | printf("Next thoing\n"); | ||||||
| 	int change_status_msgs[] = { CWMSG_CHANGE_STATE_EVENT_REQUEST, -1 }; | 	int change_status_msgs[] = { CWMSG_IMAGE_DATA_REQUEST,CWMSG_CHANGE_STATE_EVENT_REQUEST, -1 }; | ||||||
| 	cwrmsg =  conn_wait_for_request(wtpman->conn, change_status_msgs, timer); | 	cwrmsg =  conn_wait_for_request(wtpman->conn, change_status_msgs, timer); | ||||||
| printf("Done\n"); | printf("Done\n"); | ||||||
|  |  | ||||||
|  | |||||||
| @ -88,8 +88,10 @@ CAPWAPOBJS= \ | |||||||
| 	   cwsend_join_request.o \ | 	   cwsend_join_request.o \ | ||||||
| 	   cwsend_join_response.o \ | 	   cwsend_join_response.o \ | ||||||
| 	   cwread_join_response.o \ | 	   cwread_join_response.o \ | ||||||
| 	   cwsend_echo_request.o \ | 	cwsend_echo_request.o \ | ||||||
| 	   cwsend_echo_response.o \ | 	cw_send_echo_response.o \ | ||||||
|  | 	cw_send_image_file.o \ | ||||||
|  | 	cw_handle_echo_request.o \ | ||||||
| 	   cwsend_conf_status_response.o\ | 	   cwsend_conf_status_response.o\ | ||||||
| 	   cwread_configuration_status_request.o\ | 	   cwread_configuration_status_request.o\ | ||||||
| 	cwread_discovery_request.o\ | 	cwread_discovery_request.o\ | ||||||
| @ -185,7 +187,11 @@ CONNOBJS= conn.o \ | |||||||
| 	conn_get_response.o \ | 	conn_get_response.o \ | ||||||
| 	conn_prepare_configuration_update_request.o \ | 	conn_prepare_configuration_update_request.o \ | ||||||
| 	conn_prepare_request.o \ | 	conn_prepare_request.o \ | ||||||
| 	conn_prepare_image_data_request.o | 	conn_prepare_image_data_request.o \ | ||||||
|  | 	conn_send_request.o \ | ||||||
|  | 	conn_wait_for_message.o | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| BSTROBJS= bstr_create.o \ | BSTROBJS= bstr_create.o \ | ||||||
| 	bstr_create_from_cfgstr.o \ | 	bstr_create_from_cfgstr.o \ | ||||||
|  | |||||||
| @ -40,6 +40,7 @@ int acinfo_readelem_ac_name(struct ac_info * acinfo,int type, uint8_t *msgelem, | |||||||
| } | } | ||||||
| */ | */ | ||||||
|  |  | ||||||
|  |  | ||||||
| int acinfo_readelem_ac_descriptor(struct ac_info * acinfo,int type, uint8_t *msgelem, int len) | int acinfo_readelem_ac_descriptor(struct ac_info * acinfo,int type, uint8_t *msgelem, int len) | ||||||
| { | { | ||||||
| 	if (type != CWMSGELEM_AC_DESCRIPTOR) | 	if (type != CWMSGELEM_AC_DESCRIPTOR) | ||||||
|  | |||||||
| @ -393,7 +393,6 @@ extern void process_join_request(struct wtpinfo * wtpinfo, uint8_t * msg, int le | |||||||
| extern void process_conf_status_request(struct wtpinfo * wtpinfo, uint8_t * msg, int len); | extern void process_conf_status_request(struct wtpinfo * wtpinfo, uint8_t * msg, int len); | ||||||
|  |  | ||||||
| extern void cwread_discovery_response(struct ac_info * acinfo, uint8_t * msg, int len); | extern void cwread_discovery_response(struct ac_info * acinfo, uint8_t * msg, int len); | ||||||
| extern int cwsend_echo_response(struct conn * conn,int seqnum,struct radioinfo * radioinfo); //,struct wtpinfo * wtpinfo |  | ||||||
| extern void cwread_image_data_request(struct ac_info * acinfo, uint8_t * msg, int len); | extern void cwread_image_data_request(struct ac_info * acinfo, uint8_t * msg, int len); | ||||||
| extern void cwsend_image_data_response(struct conn * conn,int seqnum, int rc); | extern void cwsend_image_data_response(struct conn * conn,int seqnum, int rc); | ||||||
| extern int cwsend_image_data_request(struct conn * conn, struct image_data * data, struct image_identifier *id ); | extern int cwsend_image_data_request(struct conn * conn, struct image_data * data, struct image_identifier *id ); | ||||||
| @ -406,10 +405,7 @@ extern void cwsend_conf_status_response(struct conn * conn,int seqnum, int rc, s | |||||||
| extern void cwsend_unknown_response(struct conn * conn,int seqnum, int unknow_request); | extern void cwsend_unknown_response(struct conn * conn,int seqnum, int unknow_request); | ||||||
|  |  | ||||||
|  |  | ||||||
| extern const char * cw_msgelemtostr(int elem); |  | ||||||
| extern const char * cw_msgtostr(int type); |  | ||||||
|  |  | ||||||
| extern const char * cw_ianavendoridtostr(int id); |  | ||||||
| extern int hdr_print(char *str, uint8_t *packet, int len); | extern int hdr_print(char *str, uint8_t *packet, int len); | ||||||
|  |  | ||||||
| extern int cw_readelem_ecn_support(uint8_t *ecn_support, int type, uint8_t * msgelem, int len); | extern int cw_readelem_ecn_support(uint8_t *ecn_support, int type, uint8_t * msgelem, int len); | ||||||
| @ -480,4 +476,12 @@ extern int cw_readelem_vendor_specific_payload(void * data, int msgtype, int ele | |||||||
|  |  | ||||||
| */ | */ | ||||||
|  |  | ||||||
|  | extern int cw_readelem_ac_descriptor(struct ac_info * acinfo,int type, uint8_t *msgelem, int len); | ||||||
|  | extern int cw_readelem_capwap_local_ip_addr(struct sockaddr * local_ip, int type, uint8_t * msgelem, int len); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | extern int cw_send_echo_response(struct conn * conn,int seqnum,struct radioinfo * radioinfo); | ||||||
|  | extern int cw_handle_echo_request(void * d); | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|  | |||||||
| @ -186,6 +186,10 @@ struct image_data; | |||||||
| extern void conn_prepare_request(struct conn * conn, int type); | extern void conn_prepare_request(struct conn * conn, int type); | ||||||
| extern int conn_prepare_image_data_request(struct conn * conn, struct image_data *, struct image_identifier *id ); | extern int conn_prepare_image_data_request(struct conn * conn, struct image_data *, struct image_identifier *id ); | ||||||
| extern void conn_detect_capwap(struct conn * conn, struct wtpinfo * wtpinfo); | extern void conn_detect_capwap(struct conn * conn, struct wtpinfo * wtpinfo); | ||||||
|  | struct cwrmsg * conn_send_request(struct conn * conn); | ||||||
|  | struct cwrmsg * conn_wait_for_message(struct conn * conn, time_t timer); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| #define conn_is_error(conn) (conn->dtls_error) | #define conn_is_error(conn) (conn->dtls_error) | ||||||
|  |  | ||||||
|  | |||||||
| @ -9,6 +9,7 @@ | |||||||
| #include "cw_log.h" | #include "cw_log.h" | ||||||
| #include "capwap.h" | #include "capwap.h" | ||||||
| #include "sock.h" | #include "sock.h" | ||||||
|  | #include "cw_util.h" | ||||||
|  |  | ||||||
| struct args { | struct args { | ||||||
| 	struct conn *conn; | 	struct conn *conn; | ||||||
|  | |||||||
| @ -16,10 +16,21 @@ | |||||||
|  |  | ||||||
| */ | */ | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @file | ||||||
|  |  * @brief cw_iananvendoridtostr | ||||||
|  |  */ | ||||||
|  |  | ||||||
| #include "capwap.h" | #include "capwap.h" | ||||||
|  |  | ||||||
| /* definition of some iana assigned vendor id's */ | /** | ||||||
|  |  * Convert IANA vendor ID to string | ||||||
|  |  * @param id the ID | ||||||
|  |  * @return a pointer to the string | ||||||
|  |  * | ||||||
|  |  * Defines of only a view number of IDs. If the ID is unknown | ||||||
|  |  * the string "Unknown" is returned. | ||||||
|  |  */ | ||||||
| const char * cw_ianavendoridtostr(int id){ | const char * cw_ianavendoridtostr(int id){ | ||||||
| 	switch(id){ | 	switch(id){ | ||||||
| 		case CW_VENDOR_ID_ZYXEL: | 		case CW_VENDOR_ID_ZYXEL: | ||||||
|  | |||||||
| @ -33,18 +33,19 @@ | |||||||
|  * @{ |  * @{ | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| #define DBG_CW_MSG			0x00000001 | #define DBG_CW_MSG			0x00000001	/* CAPWAP messages */ | ||||||
| #define DBG_CW_MSGELEM			0x00000002 | #define DBG_CW_MSGELEM			0x00000002	/* CAPWAP message elements */ | ||||||
| #define DBG_CW_MSGELEM_DMP		0x00000004 | #define DBG_CW_MSGELEM_DMP		0x00000004	/* Dump CAPWAP message elements */ | ||||||
| #define DBG_CW_INFO			0x00000008	 | #define DBG_CW_INFO			0x00000008	 | ||||||
| #define DBG_CW_RFC			0x00000010 | #define DBG_CW_RFC			0x00000010	/* RCF-realted CAPWAP errors */ | ||||||
| #define DBG_CW_STRICT			0x00000010 | #define DBG_CW_STRICT			0x00000010 | ||||||
| #define DBG_CW_PKT_IN			0x00000020 | #define DBG_CW_PKT_IN			0x00000020	/* Headers of incoming CAPWAP packets */ | ||||||
| #define DBG_CW_PKT_OUT			0x00000040 | #define DBG_CW_PKT_OUT			0x00000040	/* Headers of outgoing CAPWAP packets */ | ||||||
| #define DBG_CW_PKT_DMP			0x00000080 | #define DBG_CW_PKT_DMP			0x00000080	/* Dump packts */ | ||||||
| #define DBG_CW_PKT_DTL			0x00000100	 | #define DBG_CW_PKT_DTL			0x00000100	 | ||||||
| #define DBG_CW_PKT_ERR			0x00000200 | #define DBG_CW_PKT_ERR			0x00000200 | ||||||
| #define DBG_CW_MSG_ERR			0x00000400 | #define DBG_CW_MSG_ERR			0x00000400	/* Errors in CAPWAP messages */ | ||||||
|  | #define DBG_CW_IMG_DTL			0x00000800	/* Detail about image transfer */ | ||||||
|  |  | ||||||
| /* driver specific debugs */ | /* driver specific debugs */ | ||||||
| #define DBG_DRV				0x00010000 | #define DBG_DRV				0x00010000 | ||||||
|  | |||||||
| @ -35,6 +35,7 @@ struct cw_dbg_cfgstrs cw_dbg_cfgstrs[] = { | |||||||
| 	{"pkt_dmp",DBG_CW_PKT_DMP}, | 	{"pkt_dmp",DBG_CW_PKT_DMP}, | ||||||
| 	{"pkt_err",DBG_CW_PKT_ERR}, | 	{"pkt_err",DBG_CW_PKT_ERR}, | ||||||
| 	{"msg_err",DBG_CW_MSG_ERR}, | 	{"msg_err",DBG_CW_MSG_ERR}, | ||||||
|  | 	{"img_dtl",DBG_CW_IMG_DTL}, | ||||||
|  |  | ||||||
| 	{"dtls",DBG_DTLS}, | 	{"dtls",DBG_DTLS}, | ||||||
| 	{"dtls_dietail",DBG_DTLS_DETAIL}, | 	{"dtls_dietail",DBG_DTLS_DETAIL}, | ||||||
|  | |||||||
| @ -3,7 +3,6 @@ | |||||||
| #include <sys/types.h> | #include <sys/types.h> | ||||||
| #include <sys/socket.h> | #include <sys/socket.h> | ||||||
| #include <netinet/in.h> | #include <netinet/in.h> | ||||||
| # |  | ||||||
| #include "capwap.h" | #include "capwap.h" | ||||||
|  |  | ||||||
| int cw_readelem_capwap_local_ip_addr(struct sockaddr * local_ip, int type, uint8_t * msgelem, int len) | int cw_readelem_capwap_local_ip_addr(struct sockaddr * local_ip, int type, uint8_t * msgelem, int len) | ||||||
|  | |||||||
| @ -1,17 +1,40 @@ | |||||||
| #include "capwap.h" | /* | ||||||
| #include "conn.h" |     This file is part of libcapwap. | ||||||
| #include "cwmsg.h" |  | ||||||
|  |  | ||||||
| int cwsend_echo_response(struct conn * conn,int seqnum,struct radioinfo * radioinfo) //,struct wtpinfo * wtpinfo) |     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 <http://www.gnu.org/licenses/>. | ||||||
|  |  | ||||||
|  | */ | ||||||
|  | /** | ||||||
|  |  * @file | ||||||
|  |  * @brief Implnts send echo response | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #include "capwap.h" | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Send an echo response message | ||||||
|  |  * @param conn connection, see #conn | ||||||
|  |  * @param seqnum sequence number to use | ||||||
|  |  * @param radioinfo radioinfo to use, should me NULL | ||||||
|  |  * @return 1=Success\nOtherwise Error. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | int cw_send_echo_response(struct conn * conn,int seqnum,struct radioinfo * radioinfo) | ||||||
| { | { | ||||||
| 	//uint8_t buffer[CWMSG_MAX_SIZE]; |  | ||||||
| 	struct cwmsg * cwmsg = &conn->resp_msg;	 | 	struct cwmsg * cwmsg = &conn->resp_msg;	 | ||||||
| 	cwmsg_init(cwmsg,conn->resp_buffer,CWMSG_ECHO_RESPONSE,seqnum,radioinfo); | 	cwmsg_init(cwmsg,conn->resp_buffer,CWMSG_ECHO_RESPONSE,seqnum,radioinfo); | ||||||
|  |  | ||||||
| 	conn_send_response(conn,cwmsg,seqnum); | 	conn_send_response(conn,cwmsg,seqnum); | ||||||
| 	return 1; | 	return 1; | ||||||
|  |  | ||||||
| 	//cwmsg_init(&cwmsg,buffer,CWMSG_ECHO_REQUEST,conn_get_next_seqnum(conn),radioinfo); |  | ||||||
| 	//	return conn_send_cwmsg(conn,&cwmsg); |  | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -31,6 +31,7 @@ | |||||||
|  |  | ||||||
| extern int cw_format_version(char *s, bstr_t version, uint32_t vendor, char * def); | extern int cw_format_version(char *s, bstr_t version, uint32_t vendor, char * def); | ||||||
| extern int cw_is_printable(const uint8_t * s,int len); | extern int cw_is_printable(const uint8_t * s,int len); | ||||||
|  | extern const char * cw_ianavendoridtostr(int id); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -59,4 +60,9 @@ void cw_mand_elem_found(int *l,int type); | |||||||
| int cw_is_missing_mand_elems(int *l); | int cw_is_missing_mand_elems(int *l); | ||||||
| void cw_get_missing_mand_elems(char *dst, int *l); | void cw_get_missing_mand_elems(char *dst, int *l); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | extern const char * cw_msgelemtostr(int elem); | ||||||
|  | extern const char * cw_msgtostr(int type); | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|  | |||||||
| @ -22,6 +22,8 @@ | |||||||
| #include <stdint.h> | #include <stdint.h> | ||||||
| #include <arpa/inet.h> | #include <arpa/inet.h> | ||||||
|  |  | ||||||
|  | #include "wtpinfo.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| /* version */ | /* version */ | ||||||
| #define LW_VERSION 0 | #define LW_VERSION 0 | ||||||
|  | |||||||
| @ -70,7 +70,7 @@ static int process_elem(void *eparm,int type,uint8_t* msgelem,int len) | |||||||
| 	if (wtpinfo_readelem_ecn_support(wtpinfo,type,msgelem,len)) | 	if (wtpinfo_readelem_ecn_support(wtpinfo,type,msgelem,len)) | ||||||
| 		goto foundX; | 		goto foundX; | ||||||
|  |  | ||||||
| 	if (cw_readelem_capwap_local_ip_addr(&wtpinfo->local_ip,type,msgelem,len)){ | 	if (cw_readelem_capwap_local_ip_addr((struct sockaddr*)&wtpinfo->local_ip,type,msgelem,len)){ | ||||||
| 		cw_mand_elem_found(e->mand, XCWMSGELEM_CAPWAP_LOCAL_IP_ADDRESS); | 		cw_mand_elem_found(e->mand, XCWMSGELEM_CAPWAP_LOCAL_IP_ADDRESS); | ||||||
| 		return 1; | 		return 1; | ||||||
| 	} | 	} | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user