From 06d748a4705e4ab288454e8989ba85fbed7ab1f3 Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Sun, 13 Mar 2016 17:55:42 +0000 Subject: [PATCH] WTP joins now a Cisco vwlc via mod cisco. FossilOrigin-Name: 21ef75e0a9c1bd22396902887a13ebd383bbbf97fe30834c8232f86ef6bb8eb6 --- src/cw/capwap_action_helpers.c | 1 + src/cw/cw_in_check_generic_resp.c | 4 ++- src/cw/cw_put_msg.c | 14 ++++++++-- src/wtp/conf_uci.c | 16 +++++------ src/wtp/discovery.c | 2 +- src/wtp/join.c | 4 ++- src/wtp/setup_conf.c | 44 ++++++++++++++++++++++++++++++- src/wtp/wtp_interface.c | 6 +++-- src/wtp/wtp_main.c | 20 +++++++------- src/wtp/wtp_uci.default.conf | 6 ++++- ssl/mkcert.sh | 2 +- 11 files changed, 91 insertions(+), 28 deletions(-) diff --git a/src/cw/capwap_action_helpers.c b/src/cw/capwap_action_helpers.c index cda9203b..4cfea1c9 100644 --- a/src/cw/capwap_action_helpers.c +++ b/src/cw/capwap_action_helpers.c @@ -28,6 +28,7 @@ struct mbag_item *cw_out_get_local(struct conn *conn, struct cw_action_out *a) struct mbag_item *cw_out_get_config(struct conn *conn, struct cw_action_out *a) { +// printf("cw get config (%d %d %s) %p\n",a->msg_id, a->elem_id,a->item_id, conn->config); return mbag_get(conn->config,a->item_id); } diff --git a/src/cw/cw_in_check_generic_resp.c b/src/cw/cw_in_check_generic_resp.c index 19d97fb0..fbbb06a9 100644 --- a/src/cw/cw_in_check_generic_resp.c +++ b/src/cw/cw_in_check_generic_resp.c @@ -15,6 +15,7 @@ int cw_in_check_generic_resp(struct conn *conn, struct cw_action_in *a, uint8_t /* Check if the message contains a result code and if it indicates an errror */ mbag_item_t * result = mbag_get(conn->incomming,CW_ITEM_RESULT_CODE); + if (result ) { if (!cw_rcok(result->dword)){ return result->dword; @@ -35,8 +36,9 @@ int cw_in_check_generic_resp(struct conn *conn, struct cw_action_in *a, uint8_t } /* if we hava a result code, return it */ - if ( result ) + if ( result ) { return result->dword; + } return 0; } diff --git a/src/cw/cw_put_msg.c b/src/cw/cw_put_msg.c index 09cda8d6..5e3b2eb3 100644 --- a/src/cw/cw_put_msg.c +++ b/src/cw/cw_put_msg.c @@ -83,12 +83,13 @@ int cw_put_msg(struct conn *conn, uint8_t * rawout) /* Element is from next msg, close action */ break; } + int l=0; if (ae->out) { - int l=0; // printf("Out Call with len =%d\n",len); l= ae->out(conn, ae, dst+len); +// cw_dbg_elem(DBG_ELEM, conn, ae->msg_id, ae->elem_id, dst+len,l); // printf("Returned len = %d\n",l); @@ -169,6 +170,11 @@ int cw_put_custom_msg(struct conn *conn, uint8_t * rawout, mavl_conststr_t elems DBGX("Put %d %i %p\n",ae->msg_id,ae->elem_id,ae->item_id); DBGX("Elem ID %s",ae->item_id); + + + + + if ( ae->item_id ) { DBGX("Item ID: %s %p",ae->item_id,CW_ITEM_NONE); } @@ -177,14 +183,18 @@ int cw_put_custom_msg(struct conn *conn, uint8_t * rawout, mavl_conststr_t elems /* Element is from next msg, close action */ break; } + int l=0; if (ae->out) { - int l=0; l= ae->out(conn, ae, dst+len); len +=l; // cw_dbg_elem_colored(DBG_ELEM, conn, ae->msg_id, ae->elem_id, // dst+len-l,l); } + +// printf("DEBUGGER\n"); +// cw_dbg_elem(DBG_ELEM, conn, ae->msg_id, ae->elem_id, 0,l); + //cw_dbg_elem_colored(DBG_ELEM,"Adding element %d to msg %d, len = %d",ae->msg_id,ae->elem_id,l); diff --git a/src/wtp/conf_uci.c b/src/wtp/conf_uci.c index e60cbcb3..096ad0c3 100644 --- a/src/wtp/conf_uci.c +++ b/src/wtp/conf_uci.c @@ -198,28 +198,28 @@ int read_config(const char * filename){ str = uci_lookup_option_string(ctx,section,"board_id"); if (str){ - uint8_t * s = bstr_create_from_cfgstr(str); - bstr_replace(&conf_board_id,s); + uint8_t * s = bstr16_create_from_cfgstr(str); + bstr16_replace(&conf_board_id,s); } str = uci_lookup_option_string(ctx,section,"board_revision"); if (str){ - uint8_t * s = bstr_create_from_cfgstr(str); - bstr_replace(&conf_board_revision,s); + uint8_t * s = bstr16_create_from_cfgstr(str); + bstr16_replace(&conf_board_revision,s); } str = uci_lookup_option_string(ctx,section,"serial_no"); if (str){ - uint8_t * s = bstr_create_from_cfgstr(str); - bstr_replace(&conf_serial_no,s); + uint8_t * s = bstr16_create_from_cfgstr(str); + bstr16_replace(&conf_serial_no,s); } str = uci_lookup_option_string(ctx,section,"model_no"); if (str){ - uint8_t * s = bstr_create_from_cfgstr(str); - bstr_replace(&conf_model_no,s); + uint8_t * s = bstr16_create_from_cfgstr(str); + bstr16_replace(&conf_model_no,s); } diff --git a/src/wtp/discovery.c b/src/wtp/discovery.c index ab337e7a..b2759b45 100644 --- a/src/wtp/discovery.c +++ b/src/wtp/discovery.c @@ -241,7 +241,7 @@ int discovery() { struct conn *conn = get_conn(); - printf("Raqddios = %d\n",conn->radios->count); + printf("Radios = %d\n",conn->radios->count); cw_run_discovery(conn, "255.255.255.255"); conn->capwap_state=CW_STATE_JOIN; diff --git a/src/wtp/join.c b/src/wtp/join.c index d3ebf32b..804e71df 100644 --- a/src/wtp/join.c +++ b/src/wtp/join.c @@ -182,7 +182,7 @@ int run_join(struct conn *conn) // conn_send_msg(conn, conn->req_buffer); - + mbag_del_all(conn->incomming); int rc = cw_send_request(conn, CW_MSG_JOIN_REQUEST); if (!cw_rcok(rc)) { @@ -211,6 +211,8 @@ int join() printf("Join\n"); + mbag_del_all(conn->incomming); + cw_aciplist_t iplist = mbag_get_mavl(conn->local, CW_ITEM_CAPWAP_CONTROL_IP_ADDRESS_LIST); if (!iplist) { diff --git a/src/wtp/setup_conf.c b/src/wtp/setup_conf.c index d601e868..0b64fa74 100644 --- a/src/wtp/setup_conf.c +++ b/src/wtp/setup_conf.c @@ -83,7 +83,49 @@ int setup_conf(struct conn * conn) if (!n) { mbag_set_word(conn->config, CW_ITEM_STATISTICS_TIMER, 120); } - + + + + + mbag_t board_data=mbag_get_mbag_c(conn->config,CW_ITEM_WTP_BOARD_DATA,mbag_create); + + printf("We have bd %p\n",board_data); + +// mbag_set_mbag(conn->config, CW_ITEM_WTP_BOARD_DATA, board_data); + + + uint32_t vendor = mbag_get_dword(board_data,CW_ITEM_WTP_BOARD_VENDOR,conf_vendor_id); + mbag_set_dword(board_data, CW_ITEM_WTP_BOARD_VENDOR, vendor); + + + mbag_set_bstrn(board_data, CW_ITEM_WTP_BOARD_MACADDRESS, + conf_macaddress, conf_macaddress_len); + +// mbag_set_bstr16n(board_data, CW_ITEM_WTP_BOARD_MODELNO, bstr_data(conf_model_no), +// bstr_len(conf_model_no)); + + + + + + + + + + + + + + + + + + + + + + + return 0; } diff --git a/src/wtp/wtp_interface.c b/src/wtp/wtp_interface.c index 2876ac26..29494af1 100644 --- a/src/wtp/wtp_interface.c +++ b/src/wtp/wtp_interface.c @@ -14,9 +14,11 @@ bstr_t get_base_rmac() { -// static uint8_t rm[8]={0x00,0x4a,0x99,0x02,0xfa,0xc0}; - static uint8_t rm[8] = { 0x00, 0x4a, 0x99, 0x02, 0xfa, 0xc0 }; +// static uint8_t rm[8] = { 0x00, 0x4a, 0x99, 0x02, 0xfa, 0xc0 }; +// static uint8_t rm[8]={0x00,0x3a,0x99,0x02,0xfa,0xc0}; + static uint8_t rm[8]={0x00,0x3a,0x99,0x03,0xfa,0xc0}; + return bstr_create(rm, 6); } diff --git a/src/wtp/wtp_main.c b/src/wtp/wtp_main.c index 779da683..d9c956b4 100644 --- a/src/wtp/wtp_main.c +++ b/src/wtp/wtp_main.c @@ -200,28 +200,28 @@ int main() mod_init_config(mod,conn->config); cfg_to_json(); - mbag_t board_data = mbag_create(); - mbag_set_dword(board_data, CW_ITEM_WTP_BOARD_VENDOR, conf_vendor_id); +// mbag_t board_data = mbag_create(); +// mbag_set_dword(board_data, CW_ITEM_WTP_BOARD_VENDOR, conf_vendor_id); - mbag_set_bstrn(board_data, CW_ITEM_WTP_BOARD_MACADDRESS, conf_macaddress, - conf_macaddress_len); - mbag_set_bstr16n(board_data, CW_ITEM_WTP_BOARD_SERIALNO, - bstr_data(conf_serial_no), bstr_len(conf_serial_no)); +// mbag_set_bstrn(board_data, CW_ITEM_WTP_BOARD_MACADDRESS, conf_macaddress, +// conf_macaddress_len); +// mbag_set_bstr16n(board_data, CW_ITEM_WTP_BOARD_SERIALNO, +// bstr_data(conf_serial_no), bstr_len(conf_serial_no)); - mbag_set_bstr16n(board_data, CW_ITEM_WTP_BOARD_MODELNO, bstr_data(conf_model_no), - bstr_len(conf_model_no)); +// mbag_set_bstr16n(board_data, CW_ITEM_WTP_BOARD_MODELNO, bstr_data(conf_model_no), +// bstr_len(conf_model_no)); - mbag_set_mbag(conn->config, CW_ITEM_WTP_BOARD_DATA, board_data); +// mbag_set_mbag(conn->config, CW_ITEM_WTP_BOARD_DATA, board_data); // mbag_set_bstrv(conn->config, CW_ITEM_WTP_SOFTWARE_VERSION, sw); - printf("Board_data %p\n", board_data); +// printf("Board_data %p\n", board_data); mbag_t mb = mbag_get_mbag(conn->config, CW_ITEM_WTP_BOARD_DATA, NULL); printf("mbag %p\n", mb); diff --git a/src/wtp/wtp_uci.default.conf b/src/wtp/wtp_uci.default.conf index e620e4d5..9f3682ee 100644 --- a/src/wtp/wtp_uci.default.conf +++ b/src/wtp/wtp_uci.default.conf @@ -34,10 +34,14 @@ config 'wtp' option discovery_interval 5 - # capwap mmode + # capwap mode # possible values: capwap, cisco # default is "capwap" option capwap_mode "capwap" + + # bindings mode + # possible values: capwpa80211, cisco + config 'dbg' diff --git a/ssl/mkcert.sh b/ssl/mkcert.sh index ecd038ea..51b6b3cf 100755 --- a/ssl/mkcert.sh +++ b/ssl/mkcert.sh @@ -74,7 +74,7 @@ fi if [ "$TYPE" = "cisco-ap" ] then PREF="$2-" - SUBJ="/C=US/ST=California/L=San Jose/O=Cisco Systems/CN=C1130-0019dbe09327/emailAddress=support@cisco.com" + SUBJ="/C=US/ST=California/L=San Jose/O=Cisco Systems/CN=C1130-902b34de9ef1/emailAddress=support@cisco.com" openssl req -nodes -new -x509 \ -sha1 \