diff --git a/src/ac/ac_dfa_configure.c b/src/ac/ac_dfa_configure.c
index 1cd0296..9bfe253 100644
--- a/src/ac/ac_dfa_configure.c
+++ b/src/ac/ac_dfa_configure.c
@@ -133,7 +133,7 @@ static struct ac_soap_response* ac_dfa_state_configure_parsing_request(struct ac
ac_base64_string_encode(jsonmessage, base64confstatus);
/* Send message */
- response = ac_soap_configurestatusevent(session, session->wtpid, base64confstatus);
+ response = ac_soap_configurestatuswtpsession(session, session->wtpid, base64confstatus);
/* Free JSON */
json_object_put(jsonparam);
diff --git a/src/ac/ac_dfa_datacheck.c b/src/ac/ac_dfa_datacheck.c
index d3b1cb4..fd63854 100644
--- a/src/ac/ac_dfa_datacheck.c
+++ b/src/ac/ac_dfa_datacheck.c
@@ -73,7 +73,7 @@ static struct ac_soap_response* ac_dfa_state_datacheck_parsing_request(struct ac
ac_base64_string_encode(jsonmessage, base64confstatus);
/* Send message */
- response = ac_soap_changestateevent(session, session->wtpid, base64confstatus);
+ response = ac_soap_changestatewtpsession(session, session->wtpid, base64confstatus);
/* Free JSON */
json_object_put(jsonparam);
@@ -245,7 +245,7 @@ int ac_dfa_state_datacheck_to_run(struct ac_session_t* session, struct capwap_pa
/* Capwap handshake complete, notify event to backend */
if (result) {
result = 0;
- response = ac_soap_runningevent(session, session->wtpid);
+ response = ac_soap_runningwtpsession(session, session->wtpid);
if (response) {
if (response->responsecode == HTTP_RESULT_OK) {
result = 1;
diff --git a/src/ac/ac_dfa_join.c b/src/ac/ac_dfa_join.c
index 686b1a1..f22b500 100644
--- a/src/ac/ac_dfa_join.c
+++ b/src/ac/ac_dfa_join.c
@@ -295,7 +295,7 @@ static struct ac_soap_response* ac_dfa_state_join_parsing_request(struct ac_sess
ac_base64_string_encode(jsonmessage, base64confstatus);
/* Send message */
- response = ac_soap_joinevent(session, session->wtpid, base64confstatus);
+ response = ac_soap_joinwtpsession(session, session->wtpid, base64confstatus);
/* Free JSON */
json_object_put(jsonparam);
@@ -632,7 +632,7 @@ int ac_dfa_state_join(struct ac_session_t* session, struct capwap_parsed_packet*
wtpid = ac_get_printable_wtpid(wtpboarddata);
if (wtpid && !ac_has_wtpid(wtpid)) {
/* Request authorization of Backend for complete join */
- response = ac_soap_authorizejoin(session, wtpid);
+ response = ac_soap_authorizewtpsession(session, wtpid);
if (response) {
resultcode.code = ac_dfa_state_join_check_authorizejoin(session, response);
ac_soapclient_free_response(response);
diff --git a/src/ac/ac_dfa_run.c b/src/ac/ac_dfa_run.c
index 8220040..0841e37 100644
--- a/src/ac/ac_dfa_run.c
+++ b/src/ac/ac_dfa_run.c
@@ -5,12 +5,31 @@
/* */
static int receive_echo_request(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
+ int validsession = 0;
+ struct ac_soap_response* response;
struct capwap_header_data capwapheader;
struct capwap_packet_txmng* txmngpacket;
ASSERT(session != NULL);
ASSERT(packet != NULL);
+ /* Check session */
+ response = ac_soap_checkwtpsession(session, session->wtpid);
+ if (response) {
+ if ((response->responsecode == HTTP_RESULT_OK) && response->xmlResponseReturn) {
+ xmlChar* xmlResult = xmlNodeGetContent(response->xmlResponseReturn);
+ if (!xmlStrcmp(xmlResult, (const xmlChar *)"true")) {
+ validsession = 1;
+ }
+ }
+
+ ac_soapclient_free_response(response);
+ }
+
+ if (!validsession) {
+ return -1;
+ }
+
/* Create response */
capwap_header_init(&capwapheader, CAPWAP_RADIOID_NONE, GET_WBID_HEADER(packet->rxmngpacket->header));
txmngpacket = capwap_packet_txmng_create_ctrl_message(&capwapheader, CAPWAP_ECHO_RESPONSE, packet->rxmngpacket->ctrlmsg.seq, session->mtu);
diff --git a/src/ac/ac_dfa_teardown.c b/src/ac/ac_dfa_teardown.c
index 22bc943..beb1a1c 100644
--- a/src/ac/ac_dfa_teardown.c
+++ b/src/ac/ac_dfa_teardown.c
@@ -10,7 +10,7 @@ int ac_dfa_state_teardown(struct ac_session_t* session, struct capwap_parsed_pac
// Notify teardown session
if (session->wtpid) {
- struct ac_soap_response* response = ac_soap_teardownevent(session, session->wtpid);
+ struct ac_soap_response* response = ac_soap_teardownwtpsession(session, session->wtpid);
if (response) {
ac_soapclient_free_response(response);
}
diff --git a/src/ac/ac_session.h b/src/ac/ac_session.h
index 2e05cde..74695ea 100644
--- a/src/ac/ac_session.h
+++ b/src/ac/ac_session.h
@@ -138,11 +138,12 @@ int ac_dfa_state_dead(struct ac_session_t* session, struct capwap_parsed_packet*
/* Soap function */
struct ac_soap_response* ac_session_send_soap_request(struct ac_session_t* session, char* method, int numparam, ...);
-#define ac_soap_authorizejoin(s, wtpid) ac_session_send_soap_request((s), "authorizeJoin", 1, "xs:string", "idwtp", wtpid)
-#define ac_soap_joinevent(s, wtpid, joinparam) ac_session_send_soap_request((s), "joinEvent", 2, "xs:string", "idwtp", wtpid, "xs:base64Binary", "join", joinparam)
-#define ac_soap_configurestatusevent(s, wtpid, confstatusparam) ac_session_send_soap_request((s), "configureStatusEvent", 2, "xs:string", "idwtp", wtpid, "xs:base64Binary", "confstatus", confstatusparam)
-#define ac_soap_changestateevent(s, wtpid, changestateparam) ac_session_send_soap_request((s), "changeStateEvent", 2, "xs:string", "idwtp", wtpid, "xs:base64Binary", "changestate", changestateparam)
-#define ac_soap_runningevent(s, wtpid) ac_session_send_soap_request((s), "runningEvent", 1, "xs:string", "idwtp", wtpid)
-#define ac_soap_teardownevent(s, wtpid) ac_session_send_soap_request((s), "teardownEvent", 1, "xs:string", "idwtp", wtpid)
+#define ac_soap_authorizewtpsession(s, wtpid) ac_session_send_soap_request((s), "authorizeWTPSession", 1, "xs:string", "idwtp", wtpid)
+#define ac_soap_joinwtpsession(s, wtpid, joinparam) ac_session_send_soap_request((s), "joinWTPSession", 2, "xs:string", "idwtp", wtpid, "xs:base64Binary", "join", joinparam)
+#define ac_soap_configurestatuswtpsession(s, wtpid, confstatusparam) ac_session_send_soap_request((s), "configureStatusWTPSession", 2, "xs:string", "idwtp", wtpid, "xs:base64Binary", "confstatus", confstatusparam)
+#define ac_soap_changestatewtpsession(s, wtpid, changestateparam) ac_session_send_soap_request((s), "changeStateWTPSession", 2, "xs:string", "idwtp", wtpid, "xs:base64Binary", "changestate", changestateparam)
+#define ac_soap_runningwtpsession(s, wtpid) ac_session_send_soap_request((s), "runningWTPSession", 1, "xs:string", "idwtp", wtpid)
+#define ac_soap_teardownwtpsession(s, wtpid) ac_session_send_soap_request((s), "teardownWTPSession", 1, "xs:string", "idwtp", wtpid)
+#define ac_soap_checkwtpsession(s, wtpid) ac_session_send_soap_request((s), "checkWTPSession", 1, "xs:string", "idwtp", wtpid)
#endif /* __AC_SESSION_HEADER__ */
diff --git a/webservice/smartcapwap.wsdl b/webservice/smartcapwap.wsdl
index 4f64cbb..484eac8 100644
--- a/webservice/smartcapwap.wsdl
+++ b/webservice/smartcapwap.wsdl
@@ -22,49 +22,56 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
+
+
+
+
+
+
+
@@ -82,29 +89,33 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
+
+
+
+
@@ -142,7 +153,7 @@
-
+
@@ -151,7 +162,7 @@
-
+
@@ -160,7 +171,7 @@
-
+
@@ -169,7 +180,7 @@
-
+
@@ -178,7 +189,7 @@
-
+
@@ -187,7 +198,16 @@
-
+
+
+
+
+
+
+
+
+
+