Fix SOAP request functions name.

Add check WTP session into capwap echo request
This commit is contained in:
vemax78 2013-09-16 22:11:32 +02:00
parent 08a8af0a70
commit 3465879b3e
7 changed files with 88 additions and 48 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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);
}

View File

@ -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__ */

View File

@ -22,49 +22,56 @@
<wsdl:message name="waitBackendEventResponse">
<wsdl:part name="return" type="xs:string"/>
</wsdl:message>
<wsdl:message name="authorizeJoin">
<wsdl:message name="authorizeWTPSession">
<wsdl:part name="idsession" type="xs:string"/>
<wsdl:part name="idwtp" type="xs:string"/>
</wsdl:message>
<wsdl:message name="authorizeJoinResponse">
<wsdl:message name="authorizeWTPSessionResponse">
<wsdl:part name="return" type="xs:boolean"/>
</wsdl:message>
<wsdl:message name="waitBackendEventFault"/>
<wsdl:message name="authorizeJoinFault"/>
<wsdl:message name="configureStatusEvent">
<wsdl:message name="configureStatusWTPSession">
<wsdl:part name="idsession" type="xs:string"/>
<wsdl:part name="idwtp" type="xs:string"/>
<wsdl:part name="confstatus" type="xs:base64Binary"/>
</wsdl:message>
<wsdl:message name="joinEvent">
<wsdl:message name="joinWTPSession">
<wsdl:part name="idsession" type="xs:string"/>
<wsdl:part name="idwtp" type="xs:string"/>
<wsdl:part name="join" type="xs:base64Binary"/>
</wsdl:message>
<wsdl:message name="configureStatusEventResponse">
<wsdl:message name="configureStatusWTPSessionResponse">
<wsdl:part name="return" type="xs:base64Binary"/>
</wsdl:message>
<wsdl:message name="changeStateEvent">
<wsdl:message name="changeStateWTPSession">
<wsdl:part name="idsession" type="xs:string"/>
<wsdl:part name="idwtp" type="xs:string"/>
<wsdl:part name="changestate" type="xs:base64Binary"/>
</wsdl:message>
<wsdl:message name="changeStateEventResponse">
<wsdl:message name="changeStateWTPSessionResponse">
<wsdl:part name="return" type="xs:base64Binary"/>
</wsdl:message>
<wsdl:message name="runningEvent">
<wsdl:message name="runningWTPSession">
<wsdl:part name="idsession" type="xs:string"/>
<wsdl:part name="idwtp" type="xs:string"/>
</wsdl:message>
<wsdl:message name="runningEventResponse"/>
<wsdl:message name="joinEventResponse">
<wsdl:message name="runningWTPSessionResponse"/>
<wsdl:message name="joinWTPSessionResponse">
<wsdl:part name="return" type="xs:base64Binary"/>
</wsdl:message>
<wsdl:message name="teardownEvent">
<wsdl:message name="teardownWTPSession">
<wsdl:part name="idsession" type="xs:string"/>
<wsdl:part name="idwtp" type="xs:string"/>
</wsdl:message>
<wsdl:message name="teardownEventResponse"/>
<wsdl:message name="teardownWTPSessionResponse"/>
<wsdl:message name="checkWTPSession">
<wsdl:part name="idsession" type="xs:string"/>
<wsdl:part name="idwtp" type="xs:string"/>
</wsdl:message>
<wsdl:message name="checkWTPSessionResponse">
<wsdl:part name="return" type="xs:boolean"/>
</wsdl:message>
<wsdl:portType name="Presence">
<wsdl:operation name="joinBackend">
<wsdl:input message="tns:joinBackend"/>
@ -82,29 +89,33 @@
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="AccessController">
<wsdl:operation name="authorizeJoin">
<wsdl:input message="tns:authorizeJoin"/>
<wsdl:output message="tns:authorizeJoinResponse"/>
<wsdl:operation name="authorizeWTPSession">
<wsdl:input message="tns:authorizeWTPSession"/>
<wsdl:output message="tns:authorizeWTPSessionResponse"/>
</wsdl:operation>
<wsdl:operation name="joinEvent">
<wsdl:input message="tns:joinEvent"/>
<wsdl:output message="tns:joinEventResponse"/>
<wsdl:operation name="joinWTPSession">
<wsdl:input message="tns:joinWTPSession"/>
<wsdl:output message="tns:joinWTPSessionResponse"/>
</wsdl:operation>
<wsdl:operation name="configureStatusEvent">
<wsdl:input message="tns:configureStatusEvent"/>
<wsdl:output message="tns:configureStatusEventResponse"/>
<wsdl:operation name="configureStatusWTPSession">
<wsdl:input message="tns:configureStatusWTPSession"/>
<wsdl:output message="tns:configureStatusWTPSessionResponse"/>
</wsdl:operation>
<wsdl:operation name="changeStateEvent">
<wsdl:input message="tns:changeStateEvent"/>
<wsdl:output message="tns:changeStateEventResponse"/>
<wsdl:operation name="changeStateWTPSession">
<wsdl:input message="tns:changeStateWTPSession"/>
<wsdl:output message="tns:changeStateWTPSessionResponse"/>
</wsdl:operation>
<wsdl:operation name="runningEvent">
<wsdl:input message="tns:runningEvent"/>
<wsdl:output message="tns:runningEventResponse"/>
<wsdl:operation name="runningWTPSession">
<wsdl:input message="tns:runningWTPSession"/>
<wsdl:output message="tns:runningWTPSessionResponse"/>
</wsdl:operation>
<wsdl:operation name="teardownEvent">
<wsdl:input message="tns:teardownEvent"/>
<wsdl:output message="tns:teardownEventResponse"/>
<wsdl:operation name="teardownWTPSession">
<wsdl:input message="tns:teardownWTPSession"/>
<wsdl:output message="tns:teardownWTPSessionResponse"/>
</wsdl:operation>
<wsdl:operation name="checkWTPSession">
<wsdl:input message="tns:checkWTPSession"/>
<wsdl:output message="tns:checkWTPSessionResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="Presence" type="tns:Presence">
@ -142,7 +153,7 @@
</wsdl:binding>
<wsdl:binding name="AccessController" type="tns:AccessController">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="authorizeJoin">
<wsdl:operation name="authorizeWTPSession">
<soap:operation soapAction=""/>
<wsdl:input>
<soap:body use="literal"/>
@ -151,7 +162,7 @@
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="joinEvent">
<wsdl:operation name="joinWTPSession">
<soap:operation soapAction=""/>
<wsdl:input>
<soap:body use="literal"/>
@ -160,7 +171,7 @@
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="configureStatusEvent">
<wsdl:operation name="configureStatusWTPSession">
<soap:operation soapAction=""/>
<wsdl:input>
<soap:body use="literal"/>
@ -169,7 +180,7 @@
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="changeStateEvent">
<wsdl:operation name="changeStateWTPSession">
<soap:operation soapAction=""/>
<wsdl:input>
<soap:body use="literal"/>
@ -178,7 +189,7 @@
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="runningEvent">
<wsdl:operation name="runningWTPSession">
<soap:operation soapAction=""/>
<wsdl:input>
<soap:body use="literal"/>
@ -187,7 +198,16 @@
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="teardownEvent">
<wsdl:operation name="teardownWTPSession">
<soap:operation soapAction=""/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="checkWTPSession">
<soap:operation soapAction=""/>
<wsdl:input>
<soap:body use="literal"/>