More documentation and Cisco support.

FossilOrigin-Name: 0a22e4c44b2df5712b2f8edaea0712fcc7fc0ca953e86179c0a653a484197a43
This commit is contained in:
7u83@mail.ru
2015-03-15 19:53:21 +00:00
parent 93ba625c7a
commit b5bacff6a3
32 changed files with 400 additions and 96 deletions

View File

@ -11,7 +11,7 @@ ifndef ARCH
endif
LDFLAGS+=-g -D_REENTRANT -L/usr/local/lib -L../capwap/$(ARCH)
CFLAGS += -Wall -g -O3 -D_REENTRANT -DIPV6 -I/usr/local/include -I../capwap
CFLAGS += -Wall -g -O0 -D_REENTRANT -DIPV6 -I/usr/local/include -I../capwap
LIBS+=-lcapwap

View File

@ -15,12 +15,45 @@
# ac_id
# A unique id for this AC
# A unique ID for this AC
# If not specified, an id is build from macaddress.
#
# Default:
# ac_id =
# hardware_version
# Hardware version for the AC
# If ommited, the hardware version is build from
# the underlying OS
#
# Default:
# hardware_version =
# software_version
# Software version for this AC
# If not specified, the compiled in software version is used.
#
# Default:
# software_version =
# cisco_hardware_version
# Hardware version sent, when AC operates in cisco-mode
#
# Default:
# cisco_hardware_version = .x01000001
# cisco_software_version
# Software version sent, when operating in cisco-mode
#
# Default:
# cisco_software_version = .x08006E00
# ---------------------------------------------------
# Network related

View File

@ -80,10 +80,10 @@ struct ac_info * get_acinfo()
acinfo->vendor_id=conf_vendor_id;
acinfo->hardware_version=(uint8_t*)conf_hardware_version;
acinfo->hardware_version_len=conf_hardware_version_len;
acinfo->software_version=(uint8_t*)conf_software_version;
acinfo->software_version_len=conf_software_version_len;
acinfo->cisco_hardware_version=(uint8_t*)conf_cisco_hardware_version;
acinfo->cisco_software_version=(uint8_t*)conf_cisco_software_version;
if (conf_dtls_psk)
acinfo->security|=AC_SECURITY_S;

View File

@ -74,11 +74,17 @@ char * conf_dtls_psk=NULL;
int conf_security=0;
long conf_vendor_id=CONF_DEFAULT_VENDOR_ID;
char * conf_hardware_version=NULL;
int conf_hardware_version_len=0;
char * conf_software_version=NULL;
int conf_software_version_len=0;
bstr_t conf_hardware_version=NULL;
bstr_t conf_software_version=NULL;
bstr_t conf_cisco_hardware_version=NULL;
bstr_t conf_cisco_software_version=NULL;
//int conf_hardware_version_len=0;
//int conf_software_version_len=0;
int conf_use_loopback = 0;
@ -168,7 +174,7 @@ static int init_vendor_id()
return 1;
}
/*
static int convert_version_string(char * si[], int *l)
{
char * s = *si;
@ -231,31 +237,47 @@ static int convert_version_string(char * si[], int *l)
return 1;
}
*/
static int init_version()
{
/* Init hardware version */
if (!conf_hardware_version)
{
struct utsname u;
int rc = uname(&u);
if (rc<0)
conf_hardware_version=CONF_DEFAULT_HARDWARE_VERSION;
conf_hardware_version=(bstr_t)strdup(CONF_DEFAULT_HARDWARE_VERSION);
else{
char str[265];
sprintf(str,"%s / %s %s",u.machine,u.sysname,u.release);
conf_hardware_version=strdup(str);
conf_hardware_version=(bstr_t)strdup(str);
}
}
conf_hardware_version_len=strlen(conf_hardware_version);
convert_version_string(&conf_hardware_version,&conf_hardware_version_len);
bstr_replace(&conf_hardware_version,bstr_create_from_cfgstr((char*)conf_hardware_version));
/* software version */
if (!conf_software_version)
conf_software_version=CONF_DEFAULT_SOFTWARE_VERSION;
conf_software_version_len=strlen(conf_software_version);
conf_software_version=(bstr_t)strdup(CONF_DEFAULT_SOFTWARE_VERSION);
bstr_replace(&conf_software_version,bstr_create_from_cfgstr((char*)conf_software_version));
/* Cisco hardware version */
if (!conf_cisco_hardware_version)
conf_cisco_hardware_version=(bstr_t)strdup(CONF_DEFAULT_CISCO_HARDWARE_VERSION);
bstr_replace(&conf_cisco_hardware_version,bstr_create_from_cfgstr((char*)conf_cisco_hardware_version));
/* Cisco software version */
if (!conf_cisco_software_version)
conf_cisco_software_version=(bstr_t)strdup(CONF_DEFAULT_CISCO_SOFTWARE_VERSION);
bstr_replace(&conf_cisco_software_version,bstr_create_from_cfgstr((char*)conf_cisco_software_version));
convert_version_string(&conf_software_version,&conf_software_version_len);
return 1;
}
@ -529,7 +551,7 @@ static int conf_read_dbg_level(cfg_t *cfg)
for (i=0; i<n; i++) {
char * str = cfg_getnstr(cfg,name,i);
int u = cw_log_str2dbglevel(str);
//int u = cw_log_str2dbglevel(str);
cw_dbg_opt_level|=cw_log_str2dbglevel(str);
}

View File

@ -28,6 +28,7 @@
#include "capwap.h"
#include "lwapp.h"
#include "bstr.h"
#ifndef CONF_DEFAULT_ACNAME
#define CONF_DEFAULT_ACNAME "AC"
@ -57,6 +58,10 @@
#define CONF_DEFAULT_HARDWARE_VERSION "Unknown"
#endif
#define CONF_DEFAULT_CISCO_HARDWARE_VERSION ".x01000001"
#define CONF_DEFAULT_CISCO_SOFTWARE_VERSION ".x05007E00"
#ifndef CONF_DEFAULT_CONTROL_PORT
#define CONF_DEFAULT_CONTROL_PORT CAPWAP_CONTROL_PORT
#endif
@ -75,10 +80,11 @@ extern struct sockaddr_storage * conf_salist;
extern int conf_salist_len;
extern long conf_vendor_id;
extern char * conf_hardware_version;
extern int conf_hardware_version_len;
extern char * conf_software_version;
extern int conf_software_version_len;
extern bstr_t conf_hardware_version;
extern bstr_t conf_software_version;
extern bstr_t conf_cisco_hardware_version;
extern bstr_t conf_cisco_software_version;

View File

@ -402,6 +402,7 @@ printf("HW: %s\n",sock_hwaddr2str(bstr_data(cwrmsg->rmac),bstr_len(cwrmsg->rmac)
cwsend_discovery_response(wtpman->conn,cwrmsg->seqnum,&radioinfo,acinfo,&wtpman->wtpinfo);
wtpman_remove(wtpman);
}
@ -553,10 +554,9 @@ static int wtpman_join(void *arg,time_t timer)
struct radioinfo radioinfo;
radioinfo.rid = cwrmsg->rid;
memcpy (radioinfo.rmac, cwrmsg->rmac,8);
// memcpy (radioinfo.rmac, cwrmsg->rmac,8);
struct ac_info * acinfo = get_acinfo();
sleep(10);
int result_code = 0;
cw_dbg(DBG_CW_MSG,"Sending join response to %s",CLIENT_IP);
@ -600,9 +600,26 @@ static void wtpman_run(void *arg)
return;
}
/* here the WTP has joined, now image update or change state event */
int msgs[] = { CWMSG_IMAGE_DATA_REQUEST, CWMSG_CHANGE_STATE_EVENT_REQUEST, -1 };
int msgs[] = { CWMSG_IMAGE_DATA_REQUEST, CWMSG_CONFIGURATION_STATUS_REQUEST, -1 };
cwrmsg = conn_wait_for_request(wtpman->conn, msgs, timer);
if (!cwrmsg){
cw_dbg(DBG_CW_MSG_ERR,"No config uration status request from %s after %d seconds, WTP died.",
sock_addr2str(&wtpman->conn->addr),wtpman->conn->wait_join);
wtpman_remove(wtpman);
return;
}
cwread_configuration_status_request(&wtpman->wtpinfo,cwrmsg->msgelems, cwrmsg->msgelems_len);
// cwsend_conf_status_response(wtpman->conn,cwrmsg->seqnum,result_code,&radioinfo,acinfo,&wtpman->wtpinfo);
exit(0);
// msgs = { CWMSG_IMAGE_DATA_REQUEST, CWMSG_CHANGE_STATE_EVENT_REQUEST, -1 };
cwrmsg = conn_wait_for_request(wtpman->conn, msgs, timer);
if (!cwrmsg){
@ -610,7 +627,10 @@ static void wtpman_run(void *arg)
return;
}
exit(0);
switch (cwrmsg->type){
case CWMSG_CHANGE_STATE_EVENT_REQUEST:
@ -635,7 +655,6 @@ exit(0);
printf("WTP is joined now\n");
exit(0);
int result_code = 0;
struct radioinfo * radioinfo;