Cisco AP can connect up to a data channel

FossilOrigin-Name: 3019e0265c564fb45223620a60ea7f4f1702fa00804804d5c9351a4f7e7d4205
This commit is contained in:
7u83@mail.ru
2018-05-07 21:29:35 +00:00
parent 1bdaa652a4
commit 09b2c70b95
11 changed files with 161 additions and 25 deletions

View File

@ -79,7 +79,7 @@ capwap-timers/data-check-timer: Word: 10
capwap-timers/echo-interval :Byte: 30
capwap-timers/max-discovery-interval :Byte: 10
radio.255/admin-state :Str: enabled
radio.255/operational-state/cause :Str: Normal
radio.255/operational-state/state :Str: enabled
#radio.255/admin-state :Str: enabled
#radio.255/operational-state/cause :Str: Normal
#radio.255/operational-state/state :Str: enabled

View File

@ -85,20 +85,78 @@ void show_aps (FILE *out)
}
void con (FILE *out)
{
struct connlist * cl;
mavliter_t it;
wtplist_lock();
cl = wtplist_get_connlist();
mavliter_init (&it, cl->by_addr);
fprintf (out, "IP\t\t\twtp-name\n");
mavliter_foreach (&it) {
cw_KTV_t * result;
char addr[SOCK_ADDR_BUFSIZE];
char wtp_name[CAPWAP_MAX_WTP_NAME_LEN];
struct conn * conn;
conn = mavliter_get_ptr (&it);
sock_addr2str_p (&conn->addr, addr);
result = cw_ktv_get (conn->remote_cfg, "wtp-name", NULL);
if (result == NULL) {
strcpy (wtp_name, "");
} else {
result->type->to_str (result, wtp_name, CAPWAP_MAX_WTP_NAME_LEN);
}
fprintf (out, "Con!! %s\t\t%s\n", addr, wtp_name);
{
mavl_t update;
update = cw_ktv_create();
cw_ktv_set_byte(update,"radio.255/admin-state",1);
conn->update_cfg=update;
}
fprintf(out,"\n");
}
wtplist_unlock();
}
void execute_cmd (FILE * out, const char *str)
{
char cmd[1024];
char args[1024];
int n;
sscanf (str, "%s%s", cmd, args);
n = sscanf (str, "%s%s", cmd, args);
if (n<=0)
return;
/*printf("CMD: %s, ARGS:\n",cmd);*/
if (strcmp (cmd, "s") == 0) {
show_aps (out);
return;
}
if (strcmp (cmd, "con")==0){
con(out);
return;
}
}
@ -116,7 +174,7 @@ void shell_loop (FILE *file)
do {
fprintf (file, "actube[%d]:>", fileno (file));
fflush (file);
str[0]=0;
fgets (str, sizeof (str), file);
execute_cmd (file, str);

View File

@ -386,6 +386,9 @@ static void * wtpman_main(void *arg)
};
/*
switch (conn->capwap_transition){
case CW_TRANSITION(CAPWAP_STATE_DTLS_SETUP, CAPWAP_STATE_JOIN):
@ -435,8 +438,25 @@ static void * wtpman_main(void *arg)
}
*/
while (!cw_timer_timeout(timer)) {
if (conn->update_cfg != NULL){
mavl_t tmp;
tmp = conn->local_cfg;
conn->local_cfg=conn->update_cfg;
cw_dbg(DBG_INFO, "Updating WTP %s",sock_addr2str(&conn->addr,sock_buf));
rc = cw_send_request(conn, CAPWAP_MSG_CONFIGURATION_UPDATE_REQUEST);
conn->update_cfg=NULL;
conn->local_cfg=tmp;
}
rc = cw_read_messages(wtpman->conn);
if (rc < 0) {
if (errno == EAGAIN)