Compare commits

...

3 Commits

Author SHA1 Message Date
7u83 085e657c76 Updated what you can do so far 2022-09-04 13:47:51 +02:00
7u83 f62b1c56e1 Added some (test) macros to git 2022-09-04 13:29:15 +02:00
7u83 acc7b692ee Deleted out-commented and unused code 2022-09-04 13:23:27 +02:00
14 changed files with 283 additions and 163 deletions

View File

@ -2,11 +2,57 @@ AC-Tube
=======
Open Source CAPWAP WLC + WTP
Current status: early development.
Current status: development.
See also http://7u83.cauwersin.com/?cat=28
What you can do so far ...
Compile as stated in INSTALL.
Read INSTALL and compile actube.
Then ...
Create certificates:
cd ssl
sh all.sh
cd ..
Edit src/actube/config.ckv and set your IP in
capwap/control-ip-address/address.0
Start actube with some debug options:
cd src/ac
/actube -d std -d mod -d elem\_detail -d elem\_dmp
If you have an AP with IOS 7.3x it should connect. Others
might connect, too.
Make sure on the AP you heve made
clear capwap private-config.
In another shell connect to the RPC interface:
cd src/ac
./act -s 127.0.0.1:5000
Send some commands to bring up a WLAN:
list # list all connected APs
select <apname> # set <apname> to the name of AP you want to select
status # show status of selected AP
# the following sequence activates a WLAN called actube on AP
load wlan1
send
clear
load activate
send
status # This should display now oper status for
# interface 0 enabled
CWAPWAP data layer is still not finished, so you can't use the WLAN

View File

@ -0,0 +1,5 @@
radio.255/capwap/operational-state/state: enabled
radio.255/capwap/admin-state: 1
radio.0/capwap/operational-state/state: enabled
radio.0/capwap/admin-state: 1

View File

@ -0,0 +1,5 @@
#
# Managed by acTube
#
radio.0/capwap/admin-state: 1

60
src/ac/rpc-macros/all.ckv Normal file
View File

@ -0,0 +1,60 @@
radio.0/cisco/air-space-capability: 0
radio.0/cisco/antenna-payload/802-11n-rx-antennas: 3
radio.0/cisco/antenna-payload/802-11n-tx-antennas: 7
radio.0/cisco/antenna-payload/antenna-cnt: 2
radio.0/cisco/antenna-payload/antenna-mode: 3
radio.0/cisco/antenna-payload/antenna.0: 1 - Internal Antenna
radio.0/cisco/antenna-payload/antenna.1: 1 - Internal Antenna
radio.0/cisco/antenna-payload/diversity-selection: 255
radio.0/cisco/antenna-payload/unknown: 0
radio.0/cisco/channel-power: .x08080d0108221c16100a04fefe0208221c16100a04fefe0308221c16100a04fefe0408221c16100a04fefe0508221c16100a04fefe0608221c16100a04fefe0708221c16100a04fefe0808221c16100a04fefe0908221c16100a04fefe0a08221c16100a04fefe0b08221c16100a04fefe0c08221c16100a04fefe0d08221c16100a04fefe
radio.0/capwap80211/rate-set: .x82848b960c1218243048606c
radio.0/capwap80211/tx-power/@cisco/cfg-type: 1 - global
radio.0/capwap80211/tx-power/current-tx-power: 1
radio.0/capwap80211/wtp-radio-config/beacon-period: 100
radio.0/capwap80211/wtp-radio-config/bssid: .x04fe7f499b90
radio.0/capwap80211/wtp-radio-config/cfg-period: 4
radio.0/capwap80211/wtp-radio-config/cfg-type: 1
radio.0/capwap80211/wtp-radio-config/cfp-maximum-duration: 60
radio.0/capwap80211/wtp-radio-config/country-str1: "DE "
radio.0/capwap80211/wtp-radio-config/country-str2: "DE "
radio.0/capwap80211/wtp-radio-config/occupancy-limit: 100
radio.0/capwap80211/wtp-radio-config/reg: 167772416
radio.0/capwap80211/wtp-radio-information: 1
radio.0/cisco/mac-operation/long-retry: 4
radio.0/cisco/mac-operation/reserved: 1
radio.0/cisco/mac-operation/rts-threshold: 2347
radio.0/cisco/mac-operation/rx-msdu-lifetime: 512
radio.0/cisco/mac-operation/short-retry: 7
radio.0/cisco/mac-operation/tx-msdu-lifetime: 512
radio.0/cisco/multi-domain-capability/first-channel: 1
radio.0/cisco/multi-domain-capability/max-tx-power-level: 65535
radio.0/cisco/multi-domain-capability/number-of-channels: 13
radio.0/cisco/multi-domain-capability/reserved: 1
radio.0/cisco/phy-ht-cap/asel-cap: 0
radio.0/cisco/phy-ht-cap/extended-ht-cap-info: .x0000
radio.0/cisco/phy-ht-cap/ht-cap-info: 6
radio.0/cisco/phy-ht-cap/mcsrates-1: .x00000000
radio.0/cisco/phy-ht-cap/mcsrates-2: .x00000000
radio.0/cisco/phy-ht-cap/mcsrates-3: .x00000000
radio.0/cisco/phy-ht-cap/mcsrates-4: .x0000ffff
radio.0/cisco/phy-ht-cap/tx-bf-cap: .x00000000
radio.0/cisco/phy-ht-control/cfg-type: 1 - global
radio.0/cisco/phy-ht-control/channel-width: 20
radio.0/cisco/phy-ht-control/cur-freq-is-dfs-channel: 0
radio.0/cisco/phy-ht-control/current-freq: 1
radio.0/cisco/phy-ht-control/enable-ht: 3
radio.0/cisco/phy-ht-control/ext-channel: 0
radio.0/cisco/phy-ht-control/flash-commit: 0
radio.0/cisco/phy-ht-control/frequency-bands-support: 206
radio.0/cisco/phy-ht-control/rest: .x00ffffff
radio.0/cisco/phy-ht-control/ti-threshold: 0

View File

@ -0,0 +1,10 @@
radio.0/cisco/air-space-capability: 0
radio.0/cisco/antenna-payload/802-11n-rx-antennas: 3
radio.0/cisco/antenna-payload/802-11n-tx-antennas: 7
radio.0/cisco/antenna-payload/antenna-cnt: 2
radio.0/cisco/antenna-payload/antenna-mode: 3
radio.0/cisco/antenna-payload/antenna.0: 1 - Internal Antenna
radio.0/cisco/antenna-payload/antenna.1: 1 - Internal Antenna
radio.0/cisco/antenna-payload/diversity-selection: 255
radio.0/cisco/antenna-payload/unknown: 0

View File

@ -0,0 +1,8 @@
radio.0/cisco/mac-operation/fragmentation-threshold: 2346
radio.0/cisco/mac-operation/long-retry: 4
radio.0/cisco/mac-operation/reserved: 1
radio.0/cisco/mac-operation/rts-threshold: 2347
radio.0/cisco/mac-operation/rx-msdu-lifetime: 512
radio.0/cisco/mac-operation/short-retry: 7
radio.0/cisco/mac-operation/tx-msdu-lifetime: 512

View File

@ -0,0 +1,5 @@
#
# Managed by acTube
#
radio.0/capwap/operational-state/state: disabled

View File

@ -0,0 +1,5 @@
#
# Managed by acTube
#
radio.0/capwap/operational-state/state: enabled

View File

@ -0,0 +1,13 @@
radio.0/capwap80211/tx-power/@cisco/cfg-type: 1 - global
radio.0/capwap80211/tx-power/current-tx-power: 1
radio.0/capwap80211/wtp-radio-config/beacon-period: 100
radio.0/capwap80211/wtp-radio-config/bssid: .x04fe7f499b90
radio.0/capwap80211/wtp-radio-config/cfg-period: 4
radio.0/capwap80211/wtp-radio-config/cfg-type: 1
radio.0/capwap80211/wtp-radio-config/cfp-maximum-duration: 60
radio.0/capwap80211/wtp-radio-config/country-str1: "DE "
radio.0/capwap80211/wtp-radio-config/country-str2: "DE "
radio.0/capwap80211/wtp-radio-config/occupancy-limit: 100
radio.0/capwap80211/wtp-radio-config/reg: 167772416
radio.0/capwap80211/wtp-radio-information: 1

89
src/ac/rpc-macros/sr.ckv Normal file
View File

@ -0,0 +1,89 @@
capwap/timers/echo-interval: 30
capwap/timers/max-discovery-interval: 10
radio.255/capwap/admin-state: 1 - enabled
radio.0/capwap/admin-state: 1 - enabled
radio.1/capwap/admin-state: 1 - enabled
radio.0/capwap/decryption-error-report-period: 120
radio.1/capwap/decryption-error-report-period: 120
capwap/idle-timeout: 300
capwap/wtp-fallback: 1
cisco/spam-domain-secret: .xe1ffd18a8f15b3b59c0a47a7f17a96e7cb36174f00
radio.0/capwap80211/wtp-radio-config/beacon-period: 100
radio.0/capwap80211/wtp-radio-config/bssid: .x003a9902fac0
radio.0/capwap80211/wtp-radio-config/cfg-period: 4
radio.0/capwap80211/wtp-radio-config/cfg-type: 1
radio.0/capwap80211/wtp-radio-config/cfp-maximum-duration: 60
radio.0/capwap80211/wtp-radio-config/country-str1: "DE "
radio.0/capwap80211/wtp-radio-config/country-str2: "DE "
radio.0/capwap80211/wtp-radio-config/occupancy-limit: 100
radio.0/capwap80211/wtp-radio-config/reg: 167772416
radio.0/capwap80211/wtp-radio-information: 1
radio.0/capwap80211/rate-set: .x82848b960c1218243048606c
radio.0/cisco/multi-domain-capability/first-channel: 1
radio.0/cisco/multi-domain-capability/max-tx-power-level: 65535
radio.0/cisco/multi-domain-capability/number-of-channels: 13
radio.0/cisco/multi-domain-capability/reserved: 1
radio.0/cisco/mac-operation/fragmentation-threshold: 2346
radio.0/cisco/mac-operation/long-retry: 4
radio.0/cisco/mac-operation/reserved: 1
radio.0/cisco/mac-operation/rts-threshold: 2347
radio.0/cisco/mac-operation/rx-msdu-lifetime: 512
radio.0/cisco/mac-operation/short-retry: 7
radio.0/cisco/mac-operation/tx-msdu-lifetime: 512
radio.1/capwap80211/tx-power/@cisco/cfg-type: 1 - global
radio.1/capwap80211/tx-power/current-tx-power: 1
radio.0/cisco/direct-sequence-control/cfg-type: 1 - global
radio.0/cisco/direct-sequence-control/current-cca-mode: 0
radio.0/cisco/direct-sequence-control/current-channel: 1
radio.0/cisco/direct-sequence-control/energy-detect-threshold: -50
radio.0/cisco/direct-sequence-control/unknown: 1
radio.0/cisco/antenna-payload/802-11n-rx-antennas: 3
radio.0/cisco/antenna-payload/802-11n-tx-antennas: 7
radio.0/cisco/antenna-payload/antenna-cnt: 2
radio.0/cisco/antenna-payload/antenna-mode: 3
radio.0/cisco/antenna-payload/antenna.0: 1 - Internal Antenna
radio.0/cisco/antenna-payload/antenna.1: 1 - Internal Antenna
radio.0/cisco/antenna-payload/diversity-selection: 255
radio.0/cisco/antenna-payload/unknown: 0
radio.0/cisco/air-space-capability: 0
radio.0/capwap/operational-state/cause: Normal
radio.0/capwap/operational-state/state: enabled
radio.0/cisco/80211h/count: 0
radio.0/cisco/80211h/enable: 0
radio.0/cisco/80211h/mode: 0
radio.0/cisco/80211h/power: 0
radio.0/cisco/elem153: .x00
radio.0/cisco/elem156: .x020100
radio.0/cisco/lwelem48: .x01055a0101a6c405b06432b03232
radio.1/cisco/lwelem33: .x00
radio.0/cisco/elem146: .x690f
radio.255/capwap/operational-state/cause: Normal
radio.255/capwap/operational-state/state: enabled
cisco/bcast-ssid-mode: 1
capwap/timers/max-discovery-interval: 10
capwap/timers/echo-interval: 30
cisco/client-auto-handoff: 0
cisco/lwelem14: .x000001000000000000000000000000000000

View File

@ -0,0 +1,3 @@
radio.0/capwap80211/tx-power/@cisco/cfg-type: 1 - global
radio.0/capwap80211/tx-power/current-tx-power: 1

View File

@ -0,0 +1,17 @@
radio.0/wlan.1/capwap80211/capability: 1073
radio.0/wlan.1/capwap80211/qos: 0
radio.0/wlan.1/capwap80211/ssid: tubeC
radio.0/wlan.1/cisco/aironet-ie: true
radio.0/wlan.1/cisco/broadcast-ssid: true
radio.0/wlan.1/cisco/dtim-period: 1
radio.0/wlan.1/cisco/encryption-policy: 4
radio.0/wlan.1/cisco/hreap-local-switch: 0
radio.0/wlan.1/cisco/profile-name: tubeC
radio.0/wlan.1/cisco/scan-defer-period: 28784
radio.0/wlan.1/cisco/scan-defer-time: 100
radio.0/wlan.1/cisco/session-timout: 1800
radio.0/wlan.1/cisco/wep-encryption: false
radio.0/wlan.1/cisco/wep-key: .xc3e9d4b1360d7cf5bcfc759753
radio.0/wlan.1/cisco/wep-key-index: 1
radio.0/wlan.1/radio-id: 0
radio.0/wlan.1/wlan-id: 1

View File

@ -0,0 +1,14 @@
radio.0/wlan.1/capwap80211/capability: 1057
radio.0/wlan.1/capwap80211/ssid: actube
radio.0/wlan.1/cisco/allow-aaa-override: 0
radio.0/wlan.1/cisco/broadcast-ssid: true
radio.0/wlan.1/cisco/dtim-period: 1
radio.0/wlan.1/cisco/encryption-policy: 16777216
radio.0/wlan.1/cisco/max-stations: 200
radio.0/wlan.1/cisco/profile-name: ACTUBE
radio.0/wlan.1/cisco/session-timout: 1800
radio.0/wlan.1/cisco/wep-encryption: 0
radio.0/wlan.1/cisco/wep-key: .x00000000000000000000000000
radio.0/wlan.1/radio-id: 0
radio.0/wlan.1/wlan-id: 1

View File

@ -159,10 +159,6 @@ int list_cmd(struct rpcdata *sd, const char *cmd)
int exit_cmd(struct rpcdata *sd, const char *cmd)
{
//fprintf(sd->out,"Unknown command: '%s'\n\r\n\r",cmd);
// printf("Exitcmd %s\n",cmd);
//fprintf(sd->out,"END: %s\n\r",cmd);
finish_cmd(sd->out);
fflush(sd->out);
return 1;
@ -290,7 +286,6 @@ send_cmd(struct rpcdata * sd, const char *cmd)
fprintf(sd->out, "Sending update cmd\n");
// conn->update_cfg=sd->update_cfg;
}
errX:
wtplist_unlock();
@ -311,8 +306,6 @@ wlan0_cmd(struct rpcdata * sd, const char *cmd)
}
else {
FILE *f=fopen("wlan0.ktv","r");
// cw_ktv_read_file(f,sd->update_cfg,conn->msgset->types_tree);
//conn->update_cfg=sd->update_cfg;
fclose(f);
}
wtplist_unlock();
@ -395,31 +388,6 @@ int del_cmd(struct rpcdata *sd, const char *str)
}
/*
void show_cfg (FILE *out, mavl_t ktv)
{
char value[500];
struct cw_Val * data;
mavliter_t it;
const struct cw_Type * type;
mavliter_init(&it,ktv);
mavliter_foreach(&it){
data = mavliter_get(&it);
type = data->type;
type->to_str(data,value,0);
fprintf(out,"%s :%s: %s\n",data->key,type->get_type_name(data), value);
}
}
*/
void print_mw(FILE *f, int w, const char * str)
{
int n,i;
@ -505,62 +473,6 @@ struct cw_Conn * find_ap(const char *name)
}
void con (FILE *out)
{
stop();
/*
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_Val_t * result;
char addr[SOCK_ADDR_BUFSIZE];
char wtp_name[CAPWAP_MAX_WTP_NAME_LEN];
struct cw_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);
{
stop();
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();
*/
}
struct command * find_cmd(const char *cmd)
{
struct command * search,*result;
@ -585,7 +497,6 @@ int execute_cmd (struct rpcdata * sd, const char *str)
char cmd[1024];
char args[1024];
int n;
struct cw_Val_Reader reader;
struct command * searchcmd;
args[0]=0;
@ -619,73 +530,8 @@ int execute_cmd (struct rpcdata * sd, const char *str)
return 0;
char key[CW_CFG_MAX_KEY_LEN];
char type[128];
char val[2048];
key[0]=0;
type[0]=0;
val[0]=0;
stop();
// cw_ktv_init_str_reader(&reader,str, strlen(str));
// n = cw_ktv_parse_string(&reader, key,type,val);
if (n==-1){
int i;
fprintf(sd->out,"Error on pos %d\n",reader.pos);
fprintf(sd->out,"%s",str);
for(i=0;i<reader.pos;i++){
fprintf(sd->out," ");
}
fprintf(sd->out,"^\n");
fprintf(sd->out,"%s\n",reader.error);
}
else{
fprintf(sd->out,"%s :%s: %s\n", key,type,val);
}
return 0;
n = sscanf (str, "%s%s", cmd, args);
if (n<=0)
return 0;
/*printf("CMD: %s, ARGS:\n",cmd);*/
if (strcmp (cmd, "s") == 0) {
show_aps (sd->out);
return 0;
}
if (strcmp (cmd, "con")==0){
con(sd->out);
return 0;
}
return 0;
}
struct esc_strings {
char *str;
char * result;
};
struct esc_strings estr[] = {
{"\x1b[H", "home"},
{"\x1b[F", "end"},
{"\x1b[A", "up"},
{"\x1b[B", "donw"},
{"\x1b[D", "left"},
{"\x1b[C", "right"},
{NULL,NULL}
};
void rpc_loop (FILE *file, cw_Cfg_t *global_cfg)
@ -751,9 +597,6 @@ void * run_rpc_server (void * arg)
close (clientsock);
}
//cw_dbg (DBG_INFO,"Accepting shell session %i, %s", rc, strerror (errno));
}
return NULL;
@ -793,8 +636,6 @@ int create_tcp_fd(const char *name)
}
static int create_unix_fd(const char *name)
{
//struct sockaddr_storage client;
//socklen_t client_size;
struct sockaddr_un addr;
int rc,fd;
@ -808,7 +649,6 @@ static int create_unix_fd(const char *name)
cw_log (LOG_ERR, "Can't bind socket 'unix:%s', %s", name, strerror (errno));
return -1;
}
//int clientsock = accept (fd, (struct sockaddr*) &client, &client_size);
return fd;
}
@ -817,7 +657,7 @@ int start_rpc(cw_Cfg_t *global_cfg)
{
struct sockdata * sockdata;
const char *sockname;
int rc; //, type;
int rc;
int fd;
rc = cw_cfg_get_bool(global_cfg,"actube/rpc/enable",1);