Moved DTLS stuff into a separate function.
FossilOrigin-Name: ece2fe748653654ba67e7efc721e9e32470f4a66665caf7aec03aaedda0fce92
This commit is contained in:
parent
850770aedf
commit
b8944b6898
@ -79,6 +79,19 @@ static struct cwrmsg * conn_wait_for_message(struct conn * conn, time_t timer)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
static struct conn_wait_for_request(struct conn * conn, int *msglist, time_t timer)
|
||||||
|
{
|
||||||
|
struct cwrmsg * cwrmsg;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct cwrmsg * conn_send_request(struct conn * conn)
|
struct cwrmsg * conn_send_request(struct conn * conn)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -103,7 +116,6 @@ struct cwrmsg * conn_send_request(struct conn * conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// cw_dbg(DBG_CW_MSG_ERR,"Wrong message blablub, type=%d,seq=%d",cwmsg->type,cwmsg->seqnum);
|
// cw_dbg(DBG_CW_MSG_ERR,"Wrong message blablub, type=%d,seq=%d",cwmsg->type,cwmsg->seqnum);
|
||||||
printf("Pnunf\n");
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -281,7 +293,7 @@ static void wtpman_run_run(void *arg)
|
|||||||
|
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
for (i=0; i<20; i++){
|
for (i=0; i<10; i++){
|
||||||
time_t t = cw_timer_start(1);
|
time_t t = cw_timer_start(1);
|
||||||
printf("Wait...\n");
|
printf("Wait...\n");
|
||||||
conn_wait_for_message(conn,t);
|
conn_wait_for_message(conn,t);
|
||||||
@ -293,19 +305,25 @@ static void wtpman_run_run(void *arg)
|
|||||||
conn->seqnum=1;
|
conn->seqnum=1;
|
||||||
|
|
||||||
conn_prepare_request(conn,CWMSG_CONFIGURATION_UPDATE_REQUEST);
|
conn_prepare_request(conn,CWMSG_CONFIGURATION_UPDATE_REQUEST);
|
||||||
// cwmsg_addelem(&conn->req_msg,CWMSGELEM_WTP_NAME,(uint8_t*)"Tube7u83",strlen("Tube7u83")+1);
|
cwmsg_addelem(&conn->req_msg,CWMSGELEM_WTP_NAME,(uint8_t*)"Tube7u83",strlen("Tube7u83")+1);
|
||||||
|
cwmsg_addelem(&conn->req_msg,CWMSGELEM_LOCATION_DATA,(uint8_t*)"Berlin",strlen("Berlin")+1);
|
||||||
|
|
||||||
cwmsg_addelem_vendor_specific_payload(&conn->req_msg,CW_VENDOR_ID_CISCO,CWVENDOR_CISCO_RAD_NAME,(uint8_t*)"AC-Tube-Client",strlen("AC-Tube-Aclinet"));
|
cwmsg_addelem_vendor_specific_payload(&conn->req_msg,CW_VENDOR_ID_CISCO,CWVENDOR_CISCO_RAD_NAME,(uint8_t*)"CiscoClient",strlen("CiscoClient"));
|
||||||
|
|
||||||
cwrmsg = conn_send_request(conn);
|
cwrmsg = conn_send_request(conn);
|
||||||
|
|
||||||
|
|
||||||
for (i=0; i<20; i++){
|
for (i=0; i<10; i++){
|
||||||
time_t t = cw_timer_start(1);
|
time_t t = cw_timer_start(1);
|
||||||
printf("Wait...\n");
|
printf("Wait...\n");
|
||||||
conn_wait_for_message(conn,t);
|
conn_wait_for_message(conn,t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* conn_prepare_request(conn,CWMSG_RESET_REQUEST);
|
||||||
|
cwmsg_addelem_image_identifier(&conn->req_msg,CW_VENDOR_ID_CISCO,"image00",strlen("image00"));
|
||||||
|
cwrmsg = conn_send_request(conn);
|
||||||
|
*/
|
||||||
|
|
||||||
printf("Set name?\n");
|
printf("Set name?\n");
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|
||||||
@ -313,24 +331,12 @@ static void wtpman_run_run(void *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void wtpman_run(void *arg)
|
|
||||||
|
static int wtpman_establish_dtls(void *arg)
|
||||||
{
|
{
|
||||||
struct wtpman * wtpman = (struct wtpman *)arg;
|
struct wtpman * wtpman = (struct wtpman *)arg;
|
||||||
struct cwrmsg * cwrmsg = conn_get_message(wtpman->conn);
|
|
||||||
|
/* setup cipher */
|
||||||
|
|
||||||
if (socklist[wtpman->socklistindex].type != SOCKLIST_UNICAST_SOCKET){
|
|
||||||
cw_dbg(DBG_DTLS,"Dropping connection from %s to non-unicast socket", CLIENT_IP);
|
|
||||||
wtpman_remove(wtpman);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* start DTLS handshake */
|
|
||||||
cw_dbg(DBG_DTLS,"Establishing DTLS session with %s",CLIENT_IP);
|
|
||||||
|
|
||||||
time_t timer = cw_timer_start(wtpman->conn->wait_dtls);
|
|
||||||
|
|
||||||
|
|
||||||
wtpman->conn->dtls_cipher=CAPWAP_CIPHER;
|
wtpman->conn->dtls_cipher=CAPWAP_CIPHER;
|
||||||
|
|
||||||
/* setup DTSL certificates */
|
/* setup DTSL certificates */
|
||||||
@ -352,20 +358,44 @@ static void wtpman_run(void *arg)
|
|||||||
|
|
||||||
if (!dtls_ok){
|
if (!dtls_ok){
|
||||||
cw_log(LOG_ERR,"Can't establish DTLS session, neither psk nor certs set in config file.");
|
cw_log(LOG_ERR,"Can't establish DTLS session, neither psk nor certs set in config file.");
|
||||||
wtpman_remove(wtpman);
|
return 0;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* try to accept the connection */
|
/* try to accept the connection */
|
||||||
if ( !dtls_accept(wtpman->conn) ){
|
if ( !dtls_accept(wtpman->conn) ){
|
||||||
cw_dbg(DBG_DTLS,"Error establishing DTLS session with %s",CLIENT_IP);
|
cw_dbg(DBG_DTLS,"Error establishing DTLS session with %s",CLIENT_IP);
|
||||||
wtpman_remove(wtpman);
|
return 0;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cw_dbg(DBG_DTLS,"DTLS session established with %s, cipher=%s", CLIENT_IP,dtls_get_cipher(wtpman->conn));
|
cw_dbg(DBG_DTLS,"DTLS session established with %s, cipher=%s", CLIENT_IP,dtls_get_cipher(wtpman->conn));
|
||||||
/* DTLS handshake done */
|
/* DTLS handshake done */
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void wtpman_run(void *arg)
|
||||||
|
{
|
||||||
|
struct wtpman * wtpman = (struct wtpman *)arg;
|
||||||
|
struct cwrmsg * cwrmsg = conn_get_message(wtpman->conn);
|
||||||
|
|
||||||
|
|
||||||
|
if (socklist[wtpman->socklistindex].type != SOCKLIST_UNICAST_SOCKET){
|
||||||
|
cw_dbg(DBG_DTLS,"Dropping connection from %s to non-unicast socket", CLIENT_IP);
|
||||||
|
wtpman_remove(wtpman);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
time_t timer = cw_timer_start(wtpman->conn->wait_dtls);
|
||||||
|
|
||||||
|
/* establish dtls session*/
|
||||||
|
if (!wtpman_establish_dtls(wtpman)){
|
||||||
|
wtpman_remove(wtpman);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("DTLS ready\n");
|
||||||
|
exit(0);
|
||||||
|
|
||||||
timer = cw_timer_start(wtpman->conn->wait_join);
|
timer = cw_timer_start(wtpman->conn->wait_join);
|
||||||
|
|
||||||
@ -426,6 +456,11 @@ static void wtpman_run(void *arg)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("CWR TYPE %d\n",cwrmsg->type);
|
||||||
|
exit(0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cwread_configuration_status_request(&wtpman->wtpinfo,cwrmsg->msgelems, cwrmsg->msgelems_len);
|
cwread_configuration_status_request(&wtpman->wtpinfo,cwrmsg->msgelems, cwrmsg->msgelems_len);
|
||||||
cwsend_conf_status_response(wtpman->conn,cwrmsg->seqnum,result_code,&radioinfo,acinfo,&wtpman->wtpinfo);
|
cwsend_conf_status_response(wtpman->conn,cwrmsg->seqnum,result_code,&radioinfo,acinfo,&wtpman->wtpinfo);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user