diff --git a/src/mod/Makefile b/src/mod/Makefile index 2ddd2fd5..f8d07f68 100644 --- a/src/mod/Makefile +++ b/src/mod/Makefile @@ -4,8 +4,10 @@ all: $(MAKE) -C cipwap $(MAKE) -C cisco cc -c modload_ac.c -I../ + cc -c modload_wtp.c -I../ clean: $(MAKE) -C capwap clean $(MAKE) -C cipwap clean $(MAKE) -C cisco clean + rm *.o diff --git a/src/mod/capwap/Makefile b/src/mod/capwap/Makefile index 5c7a897c..9e41e800 100644 --- a/src/mod/capwap/Makefile +++ b/src/mod/capwap/Makefile @@ -1,7 +1,9 @@ OBJS=\ mod_capwap_ac.o \ + mod_capwap_wtp.o\ capwap_actions_ac.o \ + capwap_actions_wtp.o \ capwap_in_wtp_descriptor.o \ capwap_in_wtp_board_data.o diff --git a/src/mod/capwap/capwap_actions_ac.c b/src/mod/capwap/capwap_actions_ac.c index 4aa7003b..7b6c1047 100644 --- a/src/mod/capwap/capwap_actions_ac.c +++ b/src/mod/capwap/capwap_actions_ac.c @@ -197,7 +197,7 @@ static cw_action_in_t actions_in[] = { } , - /* WTP Frame Tunnel Mode - Join Request */ + /* WTP Mac Type - Join Request */ { .capwap_state = CW_STATE_JOIN, .msg_id = CW_MSG_JOIN_REQUEST, @@ -221,6 +221,19 @@ static cw_action_in_t actions_in[] = { } , + /* Maximum Message Length - Join Request */ + { + .capwap_state = CW_STATE_JOIN, + .msg_id = CW_MSG_JOIN_REQUEST, + .elem_id = CW_ELEM_MAXIMUM_MESSAGE_LENGTH, + .start = cw_in_generic2, + .item_id = CW_ITEM_MAXIMUM_MESSAGE_LENGTH, + .mand = 0, + .min_len = 2, + .max_len = 2 + } + , + /* End of list */ diff --git a/src/mod/capwap/mod_capwap.h b/src/mod/capwap/mod_capwap.h index 0ea9a94e..0d12d088 100644 --- a/src/mod/capwap/mod_capwap.h +++ b/src/mod/capwap/mod_capwap.h @@ -2,6 +2,7 @@ #define __MOD_CAPWAP_H struct mod_ac * mod_capwap_ac(); +struct mod_wtp * mod_capwap_wtp(); extern int capwap_in_wtp_descriptor(struct conn *conn, struct cw_action_in *a, uint8_t * data, diff --git a/src/mod/modload.h b/src/mod/modload.h index 91d21293..73eea9ca 100644 --- a/src/mod/modload.h +++ b/src/mod/modload.h @@ -2,4 +2,5 @@ #include "capwap/mod.h" struct mod_ac * modload_ac(const char *name); +struct mod_wtp * modload_wtp(const char *name); diff --git a/src/wtp/Makefile b/src/wtp/Makefile index 30fdfcaf..a5b263c5 100644 --- a/src/wtp/Makefile +++ b/src/wtp/Makefile @@ -25,6 +25,8 @@ CFLAGS += -O0 -Wall -Wno-unused-variable -Werror -g LDFLAGS += -L../contrib/jsmn -L../../src/lib/$(ARCH) +LIBS+=-lcapwap +LIBS+=-lcisco LIBS+=-lcw LIBS+=-lnl-3 LIBS+=-lnl-genl-3 @@ -122,7 +124,7 @@ endif wtp: $(BCHECK) $(OBJS) - $(Q)$(CC) $(OBJS) -o wtp $(LDFLAGS) $(LIBS) + $(Q)$(CC) $(OBJS) ../mod/modload_wtp.o -o wtp $(LDFLAGS) $(LIBS) @$(E) " LD " $@ clean: diff --git a/src/wtp/cfg.json b/src/wtp/cfg.json index 659944e8..6c839a44 100644 --- a/src/wtp/cfg.json +++ b/src/wtp/cfg.json @@ -1,34 +1,10 @@ { - "ac_name_with_priority":{ - "":"2", - "Master AC":"1" - }, - "capwap_timers":"2590", - "cisco_ap_mode_and_type":"4", - "cisco_board_data_options":".x00010404", - "idle_timeout":"300", - "location_data":"Germany", - "wtp_board_data":{ - "model_no":"AIR-LAP1131AG-E-K9", - "serial_no":"2045", - "vendor_id":"4232704" - }, - "wtp_frame_tunnel_mode":"4", - "wtp_group_name":"tobias", - "wtp_hardware_version":"4232704,.x01000000", - "wtp_mac_type":"1", - "wtp_name":"Kaffe-Point", - "wtp_software_version":"4232704,.x07007300", "radios":{ "0":{ - "admin_state":"1", - "bssid":".x123456789abc", - "radio_type":"1" + }, "1":{ - "admin_state":"1", - "bssid":".xaabbccddeeff", - "radio_type":"2" + } } } \ No newline at end of file diff --git a/src/wtp/wtp_main.c b/src/wtp/wtp_main.c index db3da91b..7dead0ec 100644 --- a/src/wtp/wtp_main.c +++ b/src/wtp/wtp_main.c @@ -13,6 +13,9 @@ #include "capwap/capwap_80211.h" #include "capwap/radio.h" +#include "capwap/mod.h" + + #include "wtp.h" #include "wtp_conf.h" @@ -24,7 +27,7 @@ #include "cfg.h" - +#include "../mod/modload.h" @@ -111,8 +114,19 @@ mavl_destroy(b); // mbag_set_dword(r,CW_RADIO_TYPE,1); - cw_register_actions_cipwap_wtp(&capwap_actions); - cw_register_actions_capwap_80211_wtp(&capwap_actions); +// cw_register_actions_cipwap_wtp(&capwap_actions); +// cw_register_actions_capwap_80211_wtp(&capwap_actions); + + struct mod_wtp * mod = modload_wtp ("capwap"); + if (!mod) { + printf ("Can't load mod capwap\n"); + exit(0); + } + conn->detected=1; + + mod->register_actions(&capwap_actions); + + /*