Change State improvemenst.
FossilOrigin-Name: be00dd3a2e9d0c0daecb49eed1bfcc76f0820443e488a65647faf17af129672c
This commit is contained in:
parent
cf83867f09
commit
798c4fabdc
@ -151,6 +151,18 @@ static void wtpman_run_discovery(void *arg)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int xprocess_message(struct conn *conn, uint8_t * rawmsg, int rawlen,
|
||||||
|
struct sockaddr *from)
|
||||||
|
{
|
||||||
|
uint8_t *msgptr = rawmsg + cw_get_hdr_msg_offset(rawmsg);
|
||||||
|
uint32_t type = cw_get_msg_type(msgptr);
|
||||||
|
cw_log(LOG_ERR,"Hey: %d",type);
|
||||||
|
if (type == CW_MSG_DISCOVERY_REQUEST)
|
||||||
|
conn->capwap_state=CW_STATE_DISCOVERY;
|
||||||
|
|
||||||
|
|
||||||
|
return process_message(conn,rawmsg,rawlen,from);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -646,6 +658,7 @@ void wtpman_lw_addpacket(struct wtpman *wtpman, uint8_t * packet, int len)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int nodtls=0;
|
||||||
|
|
||||||
void wtpman_start(struct wtpman *wtpman, int dtlsmode)
|
void wtpman_start(struct wtpman *wtpman, int dtlsmode)
|
||||||
{
|
{
|
||||||
@ -657,6 +670,14 @@ void wtpman_start(struct wtpman *wtpman, int dtlsmode)
|
|||||||
} else {
|
} else {
|
||||||
cw_dbg(DBG_INFO, "Starting wtpman in non-dtls mode");
|
cw_dbg(DBG_INFO, "Starting wtpman in non-dtls mode");
|
||||||
|
|
||||||
|
if (nodtls){
|
||||||
|
wtpman->conn->process_message=xprocess_message;
|
||||||
|
pthread_create(&wtpman->thread, NULL, (void *) wtpman_run,
|
||||||
|
(void *) wtpman);
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
pthread_create(&wtpman->thread, NULL, (void *) wtpman_run_discovery,
|
pthread_create(&wtpman->thread, NULL, (void *) wtpman_run_discovery,
|
||||||
(void *) wtpman);
|
(void *) wtpman);
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
|
|
||||||
#include "capwap.h"
|
#include "capwap.h"
|
||||||
#include "intavltree.h"
|
|
||||||
#include "dbg.h"
|
|
||||||
#include "log.h"
|
|
||||||
#include "capwap_items.h"
|
#include "capwap_items.h"
|
||||||
|
#include "cw.h"
|
||||||
|
|
||||||
int cw_in_check_chng_state_evnt_req(struct conn *conn, struct cw_action_in *a, uint8_t * data,
|
int cw_in_check_chng_state_evnt_req(struct conn *conn, struct cw_action_in *a, uint8_t * data,
|
||||||
int len,struct sockaddr *from)
|
int len,struct sockaddr *from)
|
||||||
{
|
{
|
||||||
|
conn->capwap_state = CW_STATE_NONE;
|
||||||
|
int rc = cw_in_check_generic_req(conn,a,data,len,from);
|
||||||
|
if (rc==0)
|
||||||
conn->capwap_state = CW_STATE_RUN;
|
conn->capwap_state = CW_STATE_RUN;
|
||||||
return 0;
|
return rc;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -14,9 +14,9 @@ int cw_in_check_disc_req(struct conn *conn, struct cw_action_in *a, uint8_t * da
|
|||||||
cw_action_in_t *mlist[120];
|
cw_action_in_t *mlist[120];
|
||||||
int n = cw_check_missing_mand(mlist, conn, a);
|
int n = cw_check_missing_mand(mlist, conn, a);
|
||||||
|
|
||||||
|
|
||||||
conn->capwap_state = CW_STATE_NONE;
|
conn->capwap_state = CW_STATE_NONE;
|
||||||
|
|
||||||
|
|
||||||
if (n && conn->strict_capwap) {
|
if (n && conn->strict_capwap) {
|
||||||
cw_dbg_missing_mand(DBG_MSG_ERR, conn, mlist, n, a);
|
cw_dbg_missing_mand(DBG_MSG_ERR, conn, mlist, n, a);
|
||||||
/* if mandatory elements are missing, in strict
|
/* if mandatory elements are missing, in strict
|
||||||
@ -35,6 +35,7 @@ int cw_in_check_disc_req(struct conn *conn, struct cw_action_in *a, uint8_t * da
|
|||||||
|
|
||||||
|
|
||||||
/* ok, send response */
|
/* ok, send response */
|
||||||
|
conn->capwap_state = CW_STATE_JOIN;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user