Work on wtp join

FossilOrigin-Name: 6bc5cec137a404301cb7f1089f589c6c03cb24c1b309a6b2f9e8d595a467bc6c
This commit is contained in:
7u83@mail.ru
2018-04-01 10:44:05 +00:00
parent 03a786b530
commit 5b62365285
13 changed files with 84 additions and 55 deletions

View File

@ -1,15 +1,14 @@
#capwap/ssl-certfile:Str:../../ssl/certs/wtp.crt
capwap/ssl-certfile:Str:"../../ssl/certs/wtp.crt"
capwap/ssl-keyfile:Str:"../../ssl/certs/wtp.key"
windows:Word:124
basic/mod:Bstr16:cisco
ansi/hallo:Dword:1
discovery-type:Byte:0
wtp-frame-tunnel-mode:Byte:1
wtp-mac-type:Byte:2
wtp-board-data/vendor:Dword:1234567
wtp-board-data/model-no:Bstr16:WFAT1234
@ -31,12 +30,10 @@ radio/1/wtp-radio-information:Dword:02
wtp-name:Bstr16:WFAT01
wtp-fallback:Byte:1
ac-name-with-priority/TubesACx:Byte:3
ac-name-with-priority/TubesAC:Byte:3
ac-name-with-priority/"ac2":Byte:01
capwap-timers/max-discovery-interval:Byte:0
capwap-timers/min-discovery-interval:Byte:0
capwap-timers/echo-interval:Byte:3

View File

@ -13,7 +13,7 @@
#include "cw/dbg.h"
#include "cw/sock.h"
#include "cw/dtls.h"
#include "cw/mavl.h"
#include "wtp.h"
@ -102,12 +102,12 @@ acinfo.result_code=99;
int run_join_d(struct conn * conn, struct sockaddr *sa)
{
char addrstr[SOCK_ADDR_BUFSIZE];
int sockfd;
/* struct conn *conn = get_conn();*/
conn->capwap_state = CAPWAP_STATE_JOIN;
int sockfd;
int rc;
sockfd = socket(sa->sa_family, SOCK_DGRAM, 0);
if (sockfd == -1) {
@ -131,9 +131,9 @@ int run_join_d(struct conn * conn, struct sockaddr *sa)
return -1;
}
*/
/*
cw_dbg(DBG_DTLS, "Establishing DTLS session with %s", sock_addr2str(sa, addrstr));
cw_dbg(DBG_DTLS, "Establishing DTLS session with %s", sock_addr2str(sa, addrstr));
/*
int dtls_conf_ok=0;
if (conn->dtls_psk) {
@ -220,11 +220,36 @@ int run_join(struct conn *conn)
int join(struct conn * conn, struct cw_DiscoveryResult dis)
int join(struct conn * conn, struct cw_DiscoveryResult * dis)
{
mavliter_t ii;
char addrstr[SOCK_ADDR_BUFSIZE];
mavliter_init(&ii,dis->prio_ip);
mavliter_foreach(&ii){
cw_KTV_t * val,*ac;
mavl_t rcfg;
char * rk;
char ipstr[100];
char ac_name[CAPWAP_MAX_AC_NAME_LEN];
val = mavliter_get(&ii);
rk = val->key;
val = val->val.ptr;
val->type->to_str(val, ipstr, 100);
rcfg = cw_ktv_get_sysptr(dis->prio_ac,rk,NULL);
ac=cw_ktv_get(rcfg,"ac-name",CW_TYPE_BSTR16);
if (ac != NULL){
ac->type->to_str(ac,ac_name,sizeof(ac_name));
}
else{
strcpy(ac_name,"");
}
cw_dbg(DBG_INFO, "Going to join CAPWAP controller '%s' at %s.",ac_name,ipstr);
}
/*mbag_del_all(conn->incomming);*/

View File

@ -27,6 +27,7 @@ int cw_run_discovery(struct conn *conn, const char *acaddr, const char *bindaddr
int cw_discovery_init_results(struct cw_DiscoveryResult *dis);
void cw_discovery_free_results(struct cw_DiscoveryResult * dis);
int join(struct conn * conn, struct cw_DiscoveryResult * dis);
struct conn * get_conn();

View File

@ -81,7 +81,7 @@ int main (int argc, char **argv)
mavl_t global_cfg, types_tree;
const cw_Type_t ** ti;
int i;
struct cw_DiscoveryResult dis;
bootcfg.nmods=0;
@ -129,6 +129,24 @@ int main (int argc, char **argv)
cw_dbg_ktv_dump(global_cfg,DBG_CFG_DMP,"----- global cfg start -----","","----- global cfg end -----");
/* create a connection object */
conn = conn_create_noq(-1, NULL);
if (conn==NULL){
cw_log(LOG_ERR, "Connot create conn: %s", strerror(errno));
exit(EXIT_FAILURE);
}
/* conn->mod=mod;*/
conn->detected = 1;
conn->dtls_verify_peer=0;
conn->dtls_mtu = 12000;
conn->msgset=msgset;
conn->local_cfg = global_cfg;
conn->remote_cfg = NULL;
conn->role = CW_ROLE_WTP;
conn->wbid=1;
for (i=0;i<bootcfg.nmods; i++){
mod = cw_mod_load(bootcfg.modnames[i], global_cfg, CW_ROLE_WTP);
if (mod == NULL){
@ -137,37 +155,17 @@ int main (int argc, char **argv)
/* Build a message set from our loaded modules */
mod->register_messages(msgset, CW_MOD_MODE_CAPWAP);
mod->register_messages(msgset, CW_MOD_MODE_BINDINGS);
if (mod->setup_cfg)
mod->setup_cfg(conn);
}
/* create a connection object */
conn = conn_create_noq(-1, NULL);
if (conn==NULL){
cw_log(LOG_ERR, "Connot create conn: %s", strerror(errno));
exit(EXIT_FAILURE);
}
conn->detected = 1;
conn->dtls_verify_peer=0;
conn->dtls_mtu = 12000;
conn->msgset=msgset;
conn->local_cfg = global_cfg;
conn->remote_cfg = NULL;
conn->receiver = CW_ROLE_WTP;
conn->wbid=1;
struct cw_DiscoveryResult dis;
cw_discovery_init_results(&dis);
cw_run_discovery(conn, "255.255.255.255",NULL, &dis);
cw_dbg_ktv_dump(dis.prio_ip, DBG_INFO, "=== IP list ===", "IP", "=== END IP List ===");
/*
{
mavliter_t i;
mavliter_init(&i, dis.prio_ip);
@ -191,6 +189,8 @@ int main (int argc, char **argv)
}
}
*/
join(conn,&dis);
cw_discovery_free_results(&dis);